anchor.diff:  
   TimestampLiteral :
     't' QUOTE
  -  [0-9] [0-9] [0-9] [0-9] HYPHEN [0-9] [0-9] HYPHEN [0-9] [0-9]
  +  [0-9] [0-9] [0-9] [0-9] HYPHEN
  +  ( ('0' [1-9]) | ('1' [012]) ) HYPHEN
  +  ( ('0' [1-9]) | ([12] [0-9]) | ('3' [01]) )
     'T'
  -  [0-9] [0-9] COLON [0-9] [0-9] COLON [0-9] [0-9] (DOT [0-9]+)?
  +  ( ([01] [0-9]) | ('2' [0-3]) ) COLON
  +  [0-5] [0-9] COLON
  +  ([0-5] [0-9] | '60')
  +  (DOT [0-9]+)?
     'Z'
     QUOTE
     ;
  
positive.code: objectPathComponent
    : <assoc=left> objectPathComponent objectPathComponent  # pathStep
    | '.' (IdentifierWithoutHyphen | StringLiteral)         # keyPathStep
    | LBRACK (IntLiteral|ASTERISK) RBRACK                   # indexPathStep
    ;
  
  setLiteral
  
negative.code:   ;
  
  orderableLiteral
    : IntPosLiteral
    | IntNegLiteral
    | FloatPosLiteral
    | FloatNegLiteral
    | StringLiteral
    | BinaryLiteral
    | HexLiteral
    | TimestampLiteral
    ;
  
  IntNegLiteral :
    '-' ('0' | [1-7] [0-9]*)
    ;
  
  IntPosLiteral :
    '+'? ('0' | [1-8] [0-9]*)
    ;
  
  FloatNegLiteral :
    '-' [0-9]* '.' [0-9]+
    ;
  
  FloatPosLiteral :
    '+'? [0-9]* '.' [0-9]+
    ;
  
  HexLiteral :
  