public Exp DeepClone() { Exp result = new Exp(); result.op = op; result.param = param; result.value = value; if (a != null) { result.a = a.DeepClone(); if (b != null) { result.b = b.DeepClone(); } } return(result); }