AnnotType ::= SimpleType {Annotation}ArgType ::= Type
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}
The implementation of the context sensitive methods for parsing outside of patterns.