class NodeProperty<A, B> {} class NodeType {} class NumberExpression extends NodeType {} class Node<NodeTypeT extends NodeType> { public <ValueT> ValueT get(NodeProperty<? super NodeTypeT, ValueT> prop) { return null; } } class Main { public static void main(NodeProperty<NumberExpression, Integer> nval, Node<? extends NodeType> expr) { int val = expr.get<error descr="'get(NodeProperty<? super capture<? extends NodeType>,java.lang.Integer>)' in 'Node' cannot be applied to '(NodeProperty<NumberExpression,java.lang.Integer>)'">(nval)</error>; } }