Expression(Expression exp) { this.action = exp.getAction(); if (this.action != null) { return; } Object c = exp.getContent(); if (c instanceof Application || c instanceof Addition || c instanceof If) { // needs deep copy this.content = copy((Node) c); } else { this.content = c; } copyEnvironment(exp); }