anchor.diff:      :   (
             (declarator ASSIGN)=> (d=declarator ASSIGN)
             {
  - 	  		code.setAttribute("bind", d);
  -	  	  }
  +               code.setAttribute("bind", d);
  +            }
           )?
  -	(
  -	  id=expression
  +    (
  +      id=expression
         {
         code.setAttribute("value", id);
         }
  -	  | ai=arrayInitializer
  -	  {
  -	  code.setAttribute("value", ai);
  -	  }
  -        ) 
  +      | ai=arrayInitializer
  +      {
  +      code.setAttribute("value", ai);
  +      }
  +        )
       ;
   
   atomicBody [StringTemplate code]
   {StringTemplate app=null, svc=null;}
  -    :  	app=appSpec
  -	{code.setAttribute("config",app);}
  -	|
  -	svc=serviceSpec
  -	{code.setAttribute("config",svc);}
  +    :      app=appSpec
  +    {code.setAttribute("config",app);}
  +    |
  +    svc=serviceSpec
  +    {code.setAttribute("config",svc);}
       ;
   
   appSpec returns [StringTemplate code=template("app")]
   {StringTemplate exec=null;}
  -    :  "app" LCURLY  
  -	exec=declarator 
  -	{ code.setAttribute("exec", exec);}
  -	(
  -	  appArg[code] 
  -	)*
  -	SEMI RCURLY
  -    ;	
  +    :  "app" LCURLY
  +    exec=declarator
  +    { code.setAttribute("exec", exec);}
  +    (
  +      appArg[code]
  +    )*
  +    SEMI RCURLY
  +    ;
   
   appArg [StringTemplate code]
   {StringTemplate arg=null;}
  -    :   arg=mappingExpr 
  -	{code.setAttribute("arguments", arg);}
  -	| 
  -	stdioArg[code]
  +    :   arg=mappingExpr
  +    {code.setAttribute("arguments", arg);}
  +    |
  +    stdioArg[code]
       ;
   
   mappingExpr returns [StringTemplate code=null]
   {StringTemplate e=null;}
  -    :   (mappingFunc) => code = mappingFunc 
  -	|
  -	(
  -	e = expression
  -	{
  -	  code=template("mappingExpr");
  -	  code.setAttribute("expr", e);
  -	}
  -	)
  +    :   (mappingFunc) => code = mappingFunc
  +    |
  +    (
  +    e = expression
  +    {
  +      code=template("mappingExpr");
  +      code.setAttribute("expr", e);
  +    }
  +    )
       ;
   
   mappingFunc returns [StringTemplate code=template("mappingFunc")]
   {StringTemplate func=null, e=null;}
       :   AT (
  -	(declarator LPAREN) =>
  -	(func=declarator LPAREN e=expression RPAREN
  -	{
  -	  code.setAttribute("name", func);
  -	  code.setAttribute("arg", e);
  -	}
  -	)
  -	|
  -	(e=identifier | (LPAREN e=identifier RPAREN) )
  -	{
  -	  code.setAttribute("name", "filename");
  -	  code.setAttribute("arg", e);
  -	}
  -	)
  +    (declarator LPAREN) =>
  +    (func=declarator LPAREN e=expression RPAREN
  +    {
  +      code.setAttribute("name", func);
  +      code.setAttribute("arg", e);
  +    }
  +    )
  +    |
  +    (e=identifier | (LPAREN e=identifier RPAREN) )
  +    {
  +      code.setAttribute("name", "filename");
  +      code.setAttribute("arg", e);
  +    }
  +    )
       ;
   
   stdioArg [StringTemplate code]
   {StringTemplate t=null,m=null;}
  -    :	("stdin" {t=template("stdin");}
  -	|
  -	"stdout" {t=template("stdout");}
  -	|
  -	"stderr" {t=template("stderr");}
  -	)
  -	ASSIGN
  -	m=mappingExpr
  -	{
  -	    t.setAttribute("content", m);
  -	    code.setAttribute("stdio", t);	
  -	}
  -    ;
  -		
  +    :    ("stdin" {t=template("stdin");}
  +    |
  +    "stdout" {t=template("stdout");}
  +    |
  +    "stderr" {t=template("stderr");}
  +    )
  +    ASSIGN
  +    m=mappingExpr
  +    {
  +        t.setAttribute("content", m);
  +        code.setAttribute("stdio", t);
  +    }
  +    ;
  +
   serviceSpec returns [StringTemplate code=template("service")]
   {
   String w=null, p=null, o=null;
   StringTemplate m=null;
   }
  -    : 	"service" 
  -	LCURLY 
  -	w=wsdl (p=port)? o=operation 
  -	{
  -	    code.setAttribute("wsdlURI", w);
  -	    if (p != null)
  -	        code.setAttribute("portType", p);
  -	    code.setAttribute("operation", o);
  -	}
  -	(
  -	    m=message 
  -	    {code.setAttribute("messages", m);}
  -	)*
  -	RCURLY
  +    :     "service"
  +    LCURLY
  +    w=wsdl (p=port)? o=operation
  +    {
  +        code.setAttribute("wsdlURI", w);
  +        if (p != null)
  +            code.setAttribute("portType", p);
  +        code.setAttribute("operation", o);
  +    }
  +    (
  +        m=message
  +        {code.setAttribute("messages", m);}
  +    )*
  +    RCURLY
       ;
   
   wsdl returns [String code=null]
       : "wsdlURI" ASSIGN u:STRING_LITERAL SEMI
  -	{code=u.getText();}
  +    {code=u.getText();}
       ;
   
   port returns [String code=null]
       : "portType" ASSIGN u:STRING_LITERAL SEMI
  -	{code=u.getText();}
  +    {code=u.getText();}
       ;
   
   operation returns [String code=null]
       : "operation" ASSIGN u:STRING_LITERAL SEMI
  -	{code=u.getText();}
  +    {code=u.getText();}
       ;
   
   message returns [StringTemplate code=template("message")]
   {StringTemplate p=null, e=null;}
       :  (
  -	 ("request" {code.setAttribute("type", "request");}) 
  -	 |
  -	 ("response" {code.setAttribute("type", "response");}) 
  -	)
  -	element:ID ASSIGN
  -	{code.setAttribute("name", element.getText());}
  -	( 
  -	  (LCURLY 
  -	    ( p=part {code.setAttribute("parts", p);} )+ 
  -	   RCURLY)
  -	   |
  -	   (e=mappingExpr {code.setAttribute("expr", e);})
  -	)
  -	SEMI
  +     ("request" {code.setAttribute("type", "request");})
  +     |
  +     ("response" {code.setAttribute("type", "response");})
  +    )
  +    element:ID ASSIGN
  +    {code.setAttribute("name", element.getText());}
  +    (
  +      (LCURLY
  +        ( p=part {code.setAttribute("parts", p);} )+
  +       RCURLY)
  +       |
  +       (e=mappingExpr {code.setAttribute("expr", e);})
  +    )
  +    SEMI
       ;
   
   part returns [StringTemplate code=template("part")]
   {StringTemplate e=null;}
  -    :	p:ID ASSIGN
  -	{code.setAttribute("name", p.getText());}
  -	( 
  -	e=mappingExpr {code.setAttribute("expr", e);}
  -	)
  -	SEMI
  +    :    p:ID ASSIGN
  +    {code.setAttribute("name", p.getText());}
  +    (
  +    e=mappingExpr {code.setAttribute("expr", e);}
  +    )
  +    SEMI
       ;
   
   expression returns [StringTemplate code=null]
  
positive.code: Token op=null;
  }
      :   code=multiExpr
  	(
  	    options {
  		greedy = true;
  		//warnWhenFollowAmbig = false;
  	    }
  	    :
              {op=LT(1);}
              ( PLUS | MINUS ) b=multiExpr
              {
              a = code;
              code=template("arith");
  	    code.setAttribute("op", escape(op.getText()));
              code.setAttribute("left", a);
              code.setAttribute("right", b);
              }
  
negative.code:             }
              v2.setAttribute("type", t);
              v2.setAttribute("name", d);
               if (b2 != null)
                 v2.setAttribute("isArray", "true");
              if (i2 != null)
                 v2.setAttribute("value", i2);
              code.setAttribute("statements", v2);
            }
      )*
      SEMI
      ;
  
  declarator returns [StringTemplate code=null]
  