anchor.diff:          metatypes?
           satisfiedTypes?
           typeConstraints?
  -        (classBody | typeSpecifier ';'!)
  +        (interfaceBody | typeSpecifier ';'!)
       ;
   
   interfaceBody
  
positive.code:     ;
  
  type
      : typeNameWithArguments ('.' typeNameWithArguments)* abbreviation*
      -> ^(TYPE typeNameWithArguments+ abbreviation*)
      | 'subtype' abbreviation*
      -> ^(TYPE 'subtype' abbreviation*)
      | parameterName '.' 'subtype' abbreviation*
      -> ^(TYPE parameterName 'subtype' abbreviation*)
      ;
  
  abbreviation
      : '?' | ARRAY | LBRACKET dimension ']'
      ;
  
  
  
negative.code: //should '^' have a higher precedence?
  disjunctionExpression
      : conjunctionExpression 
        ('||'^ conjunctionExpression)*
      ;
  
  conjunctionExpression
  