anchor.diff:      ;
   
   acceptableNode
  -    : k=AcceptedKeyword ( text=Name )? streamableNode+
  +    : AcceptedKeyword ( text=Name )? streamableNode+
       ;
   
   connectNode
  -    : k=ConnectKeyword
  +    : ConnectKeyword
         (AwaitKeyword await=Name ConnectKeyword?)?
         connectURI=location
         connectOption*
  
positive.code:     ;
  
  closeNode
      : k=CloseKeyword
      ;
  
  writeFlushNode: 
      k=WriteKeyword FlushKeyword;
  
  writeCloseNode: 
      k=WriteKeyword CloseKeyword;
  
  disconnectNode
      : k=DisconnectKeyword
      ;
  
  unbindNode
      : k=UnbindKeyword
      ;
  
  writeNode
      : k=WriteKeyword writeValue+
      ;
  
  childOpenedNode
      : k=ChildKeyword OpenedKeyword
      ;
  
  childClosedNode
      : k=ChildKeyword ClosedKeyword
      ;
  
  boundNode
      : k=BoundKeyword
      ;
  
  closedNode
      : k=ClosedKeyword
      ;
  
  connectedNode
      : k=ConnectedKeyword
      ;
  
  disconnectedNode
      : k=DisconnectedKeyword
      ;
  
  openedNode
      : k=OpenedKeyword
      ;
  
  abortNode
      : k=AbortKeyword
      ;
  
  abortedNode
      : k=AbortedKeyword
      ;
  
  readClosedNode: 
      k=ReadKeyword ClosedKeyword;
  
  readNode
      : k=ReadKeyword matcher+
      ;
  
  unboundNode
      : k=UnboundKeyword
      ;
  
  readAwaitNode
      : k=ReadKeyword AwaitKeyword barrier=Name
      ;
  
  readNotifyNode
      : k=ReadKeyword NotifyKeyword barrier=Name
      ;
      
  writeAwaitNode
      : k=WriteKeyword AwaitKeyword barrier=Name
      ;
  
  writeNotifyNode
      : k=WriteKeyword NotifyKeyword barrier=Name
      ;
  
  readHttpHeaderNode
      : k=ReadKeyword HttpHeaderKeyword name=literalText (HttpMissingKeyword | matcher+)
      ;
  
  readHttpChunkTrailerNode
      : k=ReadKeyword HttpChunkTrailerKeyword name=literalText (HttpMissingKeyword | matcher+)
      ;
  
  writeHttpHeaderNode
      : k=WriteKeyword HttpHeaderKeyword name=literalText writeValue+
      ;
  
  writeHttpChunkTrailerNode
      : k=WriteKeyword HttpChunkTrailerKeyword name=literalText writeValue+
      ;
  
  writeHttpContentLengthNode
      : k=WriteKeyword HttpHeaderKeyword HttpContentLengthKeyword
      ;
  
  writeHttpHostNode
      : k=WriteKeyword HttpHeaderKeyword HttpHostKeyword
      ;
  
  readHttpMethodNode
      : k=ReadKeyword HttpMethodKeyword method=matcher
      ;
  
  writeHttpMethodNode
      : k=WriteKeyword HttpMethodKeyword method=writeValue
      ;
  
  readHttpParameterNode
      : k=ReadKeyword HttpParameterKeyword name=literalText matcher+
      ;
  
  writeHttpParameterNode
      : k=WriteKeyword HttpParameterKeyword name=literalText writeValue+
      ;
  
  readHttpVersionNode
      : k=ReadKeyword HttpVersionKeyword version=matcher
      ;
  
  writeHttpVersionNode
      : k=WriteKeyword HttpVersionKeyword version=writeValue
      ;
  
  readHttpStatusNode
      : k=ReadKeyword HttpStatusKeyword code=matcher reason=matcher
      ;
  
  writeHttpRequestNode
      : k=WriteKeyword HttpRequestKeyword form=writeValue
      ;
  
  writeHttpStatusNode
      : k=WriteKeyword HttpStatusKeyword code=writeValue reason=writeValue
      ;
  
  matcher
  
negative.code:     ;
  
  readOptionMaskNode
      : ReadKeyword OptionKeyword name=MaskKeyword value=writeValue
      ;
  
  readOptionOffsetNode
      : ReadKeyword OptionKeyword name=OffsetKeyword value=writeValue
      ;
  
  readOptionHttpChunkExtensionNode
      : ReadKeyword OptionKeyword name=ChunkExtensionKeyWord value=writeValue
      ;
  
  writeOptionMaskNode
      : WriteKeyword OptionKeyword name=MaskKeyword value=writeValue
      ;
  
  writeOptionOffsetNode
      : WriteKeyword OptionKeyword name=OffsetKeyword value=writeValue
      ;
  
  writeOptionHttpChunkExtensionNode
      : WriteKeyword OptionKeyword name=ChunkExtensionKeyWord value=writeValue
      ;
  
  serverCommandNode
  