I am not sure if this might give some problems with the reference counting. Anyway, doesn't this method look similar to what CSGObject::clone() does?