anchor.diff:  				$node.addRedirOption($b.get(i).option);
   			}
   		}
  +	;
  +
  +trace returns [Token token]
  +	: Trace {!hasNewLine()}? {$token = $Trace;}
   	;
   
   commandArg returns [Node.ArgumentNode node]
  
positive.code: 	: Int        {$type = TypeToken.toPrimitive($Int);}
  	| Float      {$type = TypeToken.toPrimitive($Float);}
  	| Boolean    {$type = TypeToken.toPrimitive($Boolean);}
  	| Identifier {$type = TypeToken.toClass($Identifier);}
  	| Func openType r=typeNameWithVoid {$type = new TypeToken.FuncTypeToken($Func, $r.type);}
  		(typeSep openParamType a=typeName {((TypeToken.FuncTypeToken)$type).addParamTypeToken($a.type);}
  			( typeSep b=typeName 
  				{((TypeToken.FuncTypeToken)$type).addParamTypeToken($b.type);}
  			)* closeParamType
  		)? closeType
  	| Identifier openType {$type = new TypeToken.GenericTypeToken($Identifier);} 
  		a=typeName {((TypeToken.GenericTypeToken)$type).addElementTypeToken($a.type);}
  			(comma b=typeName
  				{((TypeToken.GenericTypeToken)$type).addElementTypeToken($b.type);}
  			)* closeType
  	;
  
  typeNameWithVoid returns [TypeToken type]
  
negative.code: 	;
  
  singleCommandExpr returns [Node.ProcessNode node]	//FIXME:
  	: t+=trace? Command (CmdSep a+=commandArg)* (CmdSep b+=redirOption)*
  		{
  			$node = new Node.ProcessNode($Command, $t.size() == 1);
  			for(int i = 0; i < $a.size(); i++) {
  