ArgType ::= Type
AnnotType ::= SimpleType {Annotation}CompoundType ::= AnnotType {with AnnotType} [Refinement]
| RefinementInfixType ::= CompoundType {id [nl] CompoundType}SimpleType ::= SimpleType TypeArgs
| SimpleType `#' Id
| StableId
| Path `.' type
| `(' Types `)'
| WildcardTypeType ::= InfixType `=>' Type | `(' [`=>' Type] `)' `=>' Type | InfixType [ExistentialClause] ExistentialClause ::= forSome `{' ExistentialDcl {semi ExistentialDcl}} `}' ExistentialDcl ::= type TypeDcl | val ValDcl
TypeArgs ::= `[' ArgType {`,' ArgType} `]'Types ::= Type {`,' Type}
Methods which implicitly propagate the context in which they were called: either in a pattern context or not. Formerly, this was threaded through numerous methods as boolean isPattern.