Wildcard: Identifier ":" TypeExpr ("*"?) TypeExpr: BinaryExpr | UnaryExpr | PrimitiveExpr BinaryExpr: TypeExpr { Operator TypeExpr }* UnaryExpr: {UnaryOperator}? TypeExpr PrimitiveExpr: GroupExpr | Identifier GroupExpr: "(" TypeExpr ")"