code: func virtualMachineProperties(ctx context.Context, vm *object.VirtualMachine, keys []string) (*mo.VirtualMachine, error) {
  	logger.Printf("[DEBUG] Fetching properties for VM %q", vm.Name())
  	var props mo.VirtualMachine
  	if err := vm.Properties(ctx, vm.Reference(), keys, &props); err != nil {
  		return nil, err
  	}
  	return &props, nil
  }
docs: // virtualMachineProperties is a convenience method that wraps fetching the
  // VirtualMachine MO from its higher-level object.
  //
  // It takes a list of property keys to fetch. Keeping the property set small
  // can sometimes result in significant performance improvements.