anchor.diff:  
   function_call returns [String code]
       : ID method_params { $code = "(" + $ID.text + $method_params.code + ")"; }
  -/*
  -    : (ID '(' ')') => ID '(' ')' { $code = "(" + $ID.text + ")"; }
  -    | (ID '(' expression COMMA!) => ID '(' expression_list ')' {
  -            $code = "(" + $ID.text;
  -            for(int i=0; i < $expression_list.code_list.size(); ++i) {
  -                $code += " " + $expression_list.code_list.get(i);
  -            }
  -            $code += ")";
  -        }
  -    | ID '(' expression ')' { $code = "(" + $ID.text + " " + $expression.code + ")"; }
  -*/
       ;
   
   /*
  
positive.code:             }
          }
      | '(' expression ')' { $code = " " + $expression.code; }
  ;
  
  
  for_loop returns [String code]
  
negative.code: 
  method_call_chain returns [String code]
      : (method_call PERIOD) => method_call {$code=$method_call.code;}
                                (PERIOD ID method_params {$code="("+$ID.text+" "+$code+$method_params.code+")";})+
      | method_call {$code=$method_call.code;}
      ;
  
  method_call returns [String code]
      : ( ID PERIOD ID method_params) => obj=ID PERIOD func=ID method_params { $code = "(" + $func.text + " " + $obj.text + $method_params.code + ")"; }
      ;
  
  /*
   Parameter for a function or method call
   is either an empty string or, if parameters are
   present, includes leading whitespace so it can be
   directly added to any previous text
  */
  
  method_params returns [String code]
      : ( '(' ')') => '(' ')' { $code = "";}
  