Hmm, I'm not sure exactly what you're trying to do (never used byVal) but couldn't you just do something like this? Object a (property a, property b, property c); //object you want to clone to clone: Object b(a.getProperty(a), a.getProperty(b), a.getProperty(c)); Unless I'm not understanding what you want to do that seems like an easy way to do it.... If you wanted a unique object ID or something you could do a(1, b, c); b(1+a.getProperty(id);