deepCopy(getVisitedOp(type.toString()), true);
deepCopy((SIROperator)getVisitedOp(type.toString()), true);
    public Object visitVariableDefinition(JVariableDefinition self,                                        int modifiers,                                        CType type,                                        String ident,                                        JExpression expr)     {        blockStart("VariableDefinition: " + self.getIdent(), self);	printMe(type.toString());	//The attribute returned from visiting the expression of the variable def	Object retObj = null;	//visit the expression	if (expr != null)	    retObj = expr.accept(this);	//we are defining a new variable with a "new" in the code	if (retObj instanceof JUnqualifiedInstanceCreation) {	    //Portal creation (normal unqualified instance creation)	    if (type.toString().endsWith("Portal")) {		//Portal Definition , SIRCreatePortal add to symbol Table		//make the SIRCreatePortal the new expression in the definition		SIRCreatePortal cp = new SIRCreatePortal();		// mutate and return self		self.setExpression(cp);		return self;		//return new JVariableDefinition(null, modifiers, type, ident, cp);	    }	    //defining a variable to be a named stream	    //If the class of this variable is in the SIR table then	    //we need to add this definition to the symbol table	    else if (getVisitedOp(type.toString()) != null) {				SIRStream ST = (SIRStream)ObjectDeepCloner.		    deepCopy(getVisitedOp(type.toString()), true);		printMe("Adding " + ident + " to symbol table");				//If this a builtin filter set its args		setBuiltinArgs(ST, ((JUnqualifiedInstanceCreation)retObj).				     getParams());		SIRInitStatement newSIRInit = 		    new SIRInitStatement(null, 					 null, 					 ((JUnqualifiedInstanceCreation)retObj).					 getParams(), 					 ST);		symbolTable.put(self, newSIRInit);		return null;		//return new JVariableDefinition(null, modifiers, type, ident, expr);	    }	    	    else 		at.dms.util.Utils.fail(printLine(self) +				       "Definition of Stream " + type.toString() + 				       " not seen before definition of " + ident);	}	// defining the var to be a anonymous class	// visitUnqualifiedAnonymousCreation will return an SIRInitStatement	else if (retObj instanceof SIRInitStatement) {	    //just add the SIRInitStatement to the symbol table	    printMe("Adding " + ident+ " to symbol table");	    symbolTable.put(self, retObj);	    return null;	}	self.setExpression((JExpression)retObj);	return self;	//return new JVariableDefinition(null, modifiers, type, ident, (JExpression)retObj);    }