anchor.diff:  subexpression : OPEN_PAREN ws expression ws CLOSE_PAREN;
   literal : runtimeLiteral | parsetimeLiteral;
   runtimeLiteral : dynamicDictionary | dynamicArray | block;
  -block : BLOCK_START blockParamList? sequence? ws BLOCK_END;
  +block : BLOCK_START blockParamList? ws sequence? BLOCK_END;
   blockParamList : (ws BLOCK_PARAM)+ ws PIPE?;
   dynamicDictionary : DYNDICT_START ws expressions? ws DYNARR_END;
   dynamicArray : DYNARR_START ws expressions? ws DYNARR_END;
  
positive.code: literalArray : LITARR_START literalArrayRest;
  literalArrayRest : ws ((parsetimeLiteral | bareLiteralArray | bareSymbol) ws)* CLOSE_PAREN;
  bareLiteralArray : OPEN_PAREN literalArrayRest;
  parseTimeLiteral : pseudoVariable | number | literalArray | string | symbol;
  unaryTail : unaryMessage ws unaryTail?;
  unaryMessage : ws unarySelector;
  unarySelector : IDENTIFIER;
  keywords : KEYWORD+;
  
negative.code: 
  grammar Smalltalk;
  
  script : ws sequence EOF;
  sequence : temps? ws statements? ws;
  ws : (SEPARATOR | COMMENT)*;
  temps : PIPE (ws IDENTIFIER)* ws PIPE;
  statements : answer # StatementAnswer
  