```
public class controllerName {
    public class WrapperClass {
        public CustomSObj__c custom {get; set;}
        public Boolean bool {get; set;}
        public WrapperClass(CustomSObjc__c custom) {
            this.custom = custom;
            bool = false;
        }
    }
    WrapperClass obj {get; set;} 

    WrapperClass clonedObj {get; set;}

    public ControllerName() {
        obj = new WrapperClass(...);
        clonedObj = obj.clone();
    }
}

```

I would like to know if the preceeding code performs a deep clone on the wrapped sObject, because I need an identical version of this wrapper and not just a copy of a pointer. From testing my application, it appears to do so, which is what I would like to happen. For example, calling `System.assertEquals(obj.custom.id, clonedObj.custom.id)` passes.

Am I correct?