anchor.diff:      ;
   
   caseType 
  -    : type 
  +    : producedType 
       | memberName -> ^(MEMBER memberName)
       //| (annotations? 'case' memberName) => annotations? 'case' memberName 
       ;
  
positive.code: extendedType
      : EXTENDS 
      (
        type positionalArguments
        -> ^(EXTENDED_TYPE[$EXTENDS] type positionalArguments)
      | SUPER MEMBER_OP typeReference positionalArguments
        -> ^(EXTENDED_TYPE[$EXTENDS] ^(TYPE_EXPRESSION SUPER MEMBER_OP typeReference) positionalArguments)
      )
      ;
  
  satisfiedTypes
      : SATISFIES type ('&' type)*
      -> ^(SATISFIED_TYPES[$SATISFIES] type+)
      ;
  
  abstractedType
      : 'abstracts'^ type
      ;
      
  caseTypes
  
negative.code:     ;
  
  isCaseCondition
      : IS_OP producedType
      -> ^(IS_CASE[$IS_OP] producedType)
      ;
  
  satisfiesCaseCondition
      : SATISFIES producedType
      -> ^(SATISFIES_CASE[$SATISFIES] producedType)
      ;
  
  forFail
  