public VStorageObject CloneVStorageObject(ID id, ManagedObjectReference datastore, VslmCloneSpec spec)
        {
            VStorageObject result;

            try
            {
                VersionUtils.RequiresVersion(this.Client, VimVersion.Vim65);
                ManagedObjectReference taskReference = this.CloneVStorageObject_Task(id, datastore, spec);
                result = (VStorageObject)this.Client.WaitForTask(taskReference);
            }
            catch (FaultException ex)
            {
                throw FaultUtility.HandleFault(ex);
            }
            return(result);
        }
        public ManagedObjectReference CloneVStorageObject_Task(ID id, ManagedObjectReference datastore, VslmCloneSpec spec)
        {
            ManagedObjectReference result;

            try
            {
                VersionUtils.RequiresVersion(this.Client, VimVersion.Vim65);
                CloneVStorageObjectRequestType cloneVStorageObjectRequestType = new CloneVStorageObjectRequestType();
                cloneVStorageObjectRequestType._this     = (VimApi_65.ManagedObjectReference)VIConvert.ToWsdlType(this.MoRef);
                cloneVStorageObjectRequestType.id        = (VimApi_65.ID)VIConvert.ToWsdlType(id);
                cloneVStorageObjectRequestType.datastore = (VimApi_65.ManagedObjectReference)VIConvert.ToWsdlType(datastore);
                cloneVStorageObjectRequestType.spec      = (VimApi_65.VslmCloneSpec)VIConvert.ToWsdlType(spec);
                result = (ManagedObjectReference)VIConvert.ToVim(this.VimServiceProxy.CloneVStorageObject_Task(new CloneVStorageObject_TaskRequest(cloneVStorageObjectRequestType)).CloneVStorageObject_TaskResponse.returnval);
            }
            catch (FaultException ex)
            {
                throw FaultUtility.HandleFault(ex);
            }
            return(result);
        }