anchor.diff:      : VAL name=ID
         (COLON type=type_annotation {annotation = "(t/ann " + $name.text + " " + $type.code +  ")\n";})?
         '=' expression { $code = "(def " + $name.text + " " + $expression.code + ")"; }
  -/*
  -    | VAL name=ID
  -      COLON container=ID {annotation = "(t/ann " + $name.text + " (t/" + $container.text;} '[' (type=ID {annotation += " " + $type.text;})+ ']' {annotation += "))\n";}
  -      '=' expression { $code = "(def " + $name.text + " " + $expression.code + ")"; }
  -*/
       ;
   
   function_def_params returns [List<String> code_list]
  
positive.code:     $code += ")";
      $code = annotation + $code;
  }
      : /*(DEFN ID '(' .* ';') =>*/ DEFN name=ID '(' function_def_params ')' {
              $code = "(defn " + $name.text;
              $code += " [";
              for(int i=0; i < $function_def_params.code_list.size(); ++i) {
  
negative.code:             }
              $code += " ]";
          }
          (COLON {annotation = "(t/ann " + $name.text + " [";} a=func_type_annotation { annotation += $a.code + " ";} /*   (b=ID {annotation += $b.text + " ";})+*/
           ARROW c=type_annotation {annotation += "-> " + $c.code + "])\n";})?
          '{' (statement_term { $code += "\n\t" + $statement_term.code; } )+ '}'
      ;
  
  
  