Type Patterns

A type pattern is one of

TypeNamePatternall types in TypeNamePattern
SubtypePatternall types in SubtypePattern, a pattern with a +.
ArrayTypePatternall types in ArrayTypePattern, a pattern with one or more []s.
!TypePatternall types not in TypePattern
TypePattern0 && TypePattern1all types in both TypePattern0 and TypePattern1
TypePattern0 || TypePattern1all types in either TypePattern0 or TypePattern1
( TypePattern )all types in TypePattern

where TypeNamePattern can either be a plain type name, the wildcard * (indicating all types), or an identifier with embedded * and .. wildcards.

An embedded * in an identifier matches any sequence of characters, but does not match the package (or inner-type) separator ".".

An embedded .. in an identifier matches any sequence of characters that starts and ends with the package (or inner-type) separator ".".