private static Task <Either <PowershellFailure, TypedPsObject <VirtualMachineInfo> > > EnsureCreated(Option <TypedPsObject <VirtualMachineInfo> > vmInfo, MachineConfig config, VMStorageSettings storageSettings, IPowershellEngine engine)
 {
     return(vmInfo.MatchAsync(
                None: () => Converge.CreateVirtualMachine(engine, config.Name, storageSettings.StorageIdentifier,
                                                          config.VM.Path,
                                                          config.VM.Memory.Startup),
                Some: s => s
                ));
 }
 private static Task <Either <PowershellFailure, TypedPsObject <VirtualMachineInfo> > > EnsureCreated(Option <TypedPsObject <VirtualMachineInfo> > vmInfo, MachineConfig config, VMStorageSettings storageSettings, IPowershellEngine engine)
 {
     return(vmInfo.MatchAsync(
                None: () =>
                storageSettings.StorageIdentifier.ToEither(new PowershellFailure {
         Message = "Unknown storage identifier, cannot create new virtual machine"
     })
                .BindAsync(storageIdentifier => Converge.CreateVirtualMachine(engine, config.Name, storageIdentifier,
                                                                              storageSettings.VMPath,
                                                                              config.VM.Memory.Startup)),
                Some: s => s
                ));
 }