anchor.diff:              except:
                   raise SemanticException(#etname, "indice out of bounds")
              
  -            ## = self.astFactory.dup(expr)
  +            ## = self.astFactory.dupTree(expr)
           }
       |! #(LOOKUP_OP lexpr:rtl_expand otname:NAME otindex:rtl_expand rexpr:rtl_expand)
           {
  
positive.code:             except:
                  raise SemanticException(#otname, "indice out of bounds")
             
              op = self.astFactory.dup(op)
              ## = #(op, #lexpr, #rexpr)
          }
      |! #(FUNCTION fname:NAME { fargs = [] } (farg:rtl_expand { fargs.append(#farg) } )* )
  
negative.code:             
              self.locals.append(dict(zip(fparams, fargs)))
              self.rtl_expand(fbody)
              ## = self.getAST()
              self.locals.pop()
          }
  	| #( . ( rtl_expand )* )
  