/*
  * @return the VcSnapshot object.
  */
 protected static VcSnapshotImpl loadSnapshotFromMoRef(
     ManagedObjectReference moRef, VcVirtualMachineImpl parent, String name) throws Exception {
   AuAssert.check(VcContext.isInSession());
   VcSnapshotImpl obj = null;
   ManagedObject mo = MoUtil.getManagedObject(moRef);
   AuAssert.check(mo instanceof Snapshot);
   obj = new VcSnapshotImpl((Snapshot) mo, parent, name);
   Profiler.inc(StatsType.VC_LOAD_MO, obj);
   return obj;
 }
 /** @return the VcObject from ManagedObjectReference */
 public static VcObjectImpl loadFromMoRef(ManagedObjectReference moRef) throws Exception {
   AuAssert.check(VcContext.isInSession());
   VcObjectImpl obj = null;
   ManagedObject mo = MoUtil.getManagedObject(moRef);
   if (mo instanceof Datacenter) {
     obj = new VcDatacenterImpl((Datacenter) mo);
   } else if (mo instanceof ClusterComputeResource) {
     obj = new VcClusterImpl((ClusterComputeResource) mo);
   } else if (mo instanceof Network) {
     obj = new VcNetworkImpl((Network) mo);
   } else if (mo instanceof Datastore) {
     obj = new VcDatastoreImpl((Datastore) mo);
   } else if (mo instanceof ResourcePool) {
     obj = new VcResourcePoolImpl((ResourcePool) mo);
   } else if (mo instanceof VirtualMachine) {
     obj = new VcVirtualMachineImpl((VirtualMachine) mo);
   } else if (mo instanceof Snapshot) {
     AuAssert.unreachable();
   } else if (mo instanceof HostSystem) {
     obj = new VcHostImpl((HostSystem) mo);
   }
   Profiler.inc(StatsType.VC_LOAD_MO, obj);
   return obj;
 }
 @SuppressWarnings("unchecked")
 @Override
 public <T extends ManagedObject> T getManagedObject() {
   return (T) MoUtil.getManagedObject(moRef);
 }