anchor.diff:  sliceop
       : COLON test?
       ;
  -
  -exprlist
  -    : expr (COMMA expr)* COMMA?
  -    ;
  -
  -testlist
  -    : test (COMMA test)* COMMA?
  -    ;
  -
  -dictorsetmaker
  -    : (test COLON test | POWER expr) (comp_for | (COMMA (test COLON test | POWER expr))* COMMA?)
  -    | (test | star_expr) (comp_for | (COMMA (test | star_expr))* COMMA?)
  -    ;
  -
  -star_expr
  -    : STAR expr
  -    ;
  -
  -classdef
  -    : CLASS name (OPEN_PAREN arglist? CLOSE_PAREN)? COLON suite
  -    ;
  -
  -funcdef
  -    : ASYNC? DEF name OPEN_PAREN typedargslist? CLOSE_PAREN (ARROW test)? COLON suite
  -    ;
  -
  -arglist
  -    // The reason that keywords are test nodes instead of name is that using name
  -    // results in an ambiguity. ast.c makes sure it's a name.
  -    : argument (COMMA argument)* COMMA?
  -    ;
  -
  -argument
  -    : test (comp_for | ASSIGN test)?
  -    | (POWER | STAR) test
  -    ;
  -
  +//----------------------------------------------------------------------------------------------------------------------
  +
  +// --------------------- !!! WARNING completely unused !!!--------------------------------------------------------------
   list_iter
       : FOR exprlist IN testlist_safe list_iter?
       | IF test list_iter?
  
positive.code:       (yield_expr | testlist)
      ;
  
  import_as_names
      : import_as_name (COMMA import_as_name)* COMMA?
      ;
  
negative.code:     : comparison (LESS_THAN | GREATER_THAN | EQUALS | GT_EQ | LT_EQ | NOT_EQ_1 | NOT_EQ_2 | IN | IS optional=NOT? | NOT optional=IN?) comparison
      | expr
      ;
  //----------------------------------------------------------------------------------------------------------------------
  
  // -------------------------- expressions ------------------------------------------------------------------------------
  expr
      : AWAIT? atom trailer*
      | <assoc=right> expr op=POWER expr
  