static public FromInterfaceResponse MeasurementTakeRequest(
			this InterfaceAppManager interfaceAppManager,
			int processId,
			Int64 measurementBeginTimeMinMilli)
		{
			while (interfaceAppManager?.MeasurementInProgress() ?? false)
				Thread.Sleep(11);

			var processIdLast = interfaceAppManager?.ClientRequest(new ToInterfaceRequest
			{
				MemoryMeasurementInitGetLast = true,
			})
			?.MemoryMeasurementInit?.ProcessId;

			var MemoryMeasurementInitReuse = processIdLast == processId;

			var Response = interfaceAppManager?.ClientRequest(new ToInterfaceRequest
			{
				MemoryMeasurementInitTake = MemoryMeasurementInitReuse ? null : new MemoryMeasurementInitParam
				{
					ProcessId = processId,
				},
				MemoryMeasurementTake = !MemoryMeasurementInitReuse,
				MemoryMeasurementGetLast = true,
			});

			if (!(measurementBeginTimeMinMilli <= Response?.MemoryMeasurement?.Begin))
				Response = interfaceAppManager?.ClientRequest(new ToInterfaceRequest
				{
					MemoryMeasurementTake = true,
				});

			return Response;
		}
		static public bool? MeasurementInProgress(this InterfaceAppManager interfaceAppManager) =>
			interfaceAppManager?.ClientRequest(new ToInterfaceRequest())?.MemoryMeasurementInProgress;
		static public FromInterfaceResponse ClientRequest(
			this InterfaceAppManager interfaceAppManager,
			ToInterfaceRequest request) =>
			FromInterfaceResponse.DeserializeFromString<FromInterfaceResponse>(
				interfaceAppManager?.ClientRequest(FromInterfaceResponse.SerializeToString(request)));