A list of arguments types. This is a list of objects formatted like this:
- type: A PatternType.
- optional: Whether it's optional or not. After an optional argument can only be other optional arguments.
- name: The name of the argument. If both the name and optional aren't given, the type can be standalone without a wrapper object.
(PatternType | { type: PatternType; name?: string; optional?: boolean; })[]