Full Code of symphonyoss/plexus-interop for AI

master 66ba7daa0781 cached
1633 files
6.1 MB
1.7M tokens
7123 symbols
1 requests
Download .txt
Showing preview only (6,829K chars total). Download the full file or copy to clipboard to get everything.
Repository: symphonyoss/plexus-interop
Branch: master
Commit: 66ba7daa0781
Files: 1633
Total size: 6.1 MB

Directory structure:
gitextract_vkfrubuv/

├── .github/
│   └── CONTRIBUTING.md
├── .gitignore
├── .whitesource
├── FILE_HEADER
├── LICENSE
├── NOTICE
├── README.md
├── add-file-headers.bat
├── build.bat
├── build.gradle
├── desktop/
│   ├── .gitignore
│   ├── .nuget-local-packages/
│   │   └── README.txt
│   ├── NuGet.Config
│   ├── README.txt
│   ├── build.cmd
│   ├── build.gradle
│   ├── coverage-broker.cmd
│   ├── coverage-client.cmd
│   ├── coverage.cmd
│   ├── dotnet.cmd
│   ├── global.json
│   ├── push.cmd
│   ├── src/
│   │   ├── Common.csproj
│   │   ├── Plexus.Channels/
│   │   │   ├── ChannelExtensions.cs
│   │   │   └── Plexus.Channels.csproj
│   │   ├── Plexus.Common.Contracts/
│   │   │   ├── AppConnectionDescriptor.cs
│   │   │   ├── BrokerFeatures.cs
│   │   │   ├── Channels/
│   │   │   │   ├── ChannelWriteTimeoutException.cs
│   │   │   │   ├── IChannel.cs
│   │   │   │   ├── IReadableChannel.cs
│   │   │   │   ├── ITerminatableWritableChannel.cs
│   │   │   │   └── IWritableChannel.cs
│   │   │   ├── EnvironmentHelper.cs
│   │   │   ├── Maybe.cs
│   │   │   ├── Nothing.cs
│   │   │   ├── Plexus.Common.Contracts.csproj
│   │   │   ├── Pools/
│   │   │   │   ├── IPooledBuffer.cs
│   │   │   │   └── IPooledObject.cs
│   │   │   ├── TransportType.cs
│   │   │   └── UniqueId.cs
│   │   ├── Plexus.Host/
│   │   │   ├── Generate.cmd
│   │   │   ├── Internal/
│   │   │   │   ├── BrokerCliOptions.cs
│   │   │   │   ├── BrokerProgram.cs
│   │   │   │   ├── Generated/
│   │   │   │   │   └── interop/
│   │   │   │   │       ├── AppConnectionDescriptor.msg.g.cs
│   │   │   │   │       ├── AppLaunchMode.msg.g.cs
│   │   │   │   │       ├── AppLifecycleService.msg.g.cs
│   │   │   │   │       ├── AppLifecycleService.svc.g.cs
│   │   │   │   │       ├── CommandLineTool.app.g.cs
│   │   │   │   │       ├── InvocationDescriptor.msg.g.cs
│   │   │   │   │       ├── Options.msg.g.cs
│   │   │   │   │       └── UniqueId.msg.g.cs
│   │   │   │   ├── IProgram.cs
│   │   │   │   ├── InstanceAwareness.cs
│   │   │   │   ├── InteropCliProgram.cs
│   │   │   │   ├── LaunchCliOptions.cs
│   │   │   │   ├── LockFile.cs
│   │   │   │   ├── ProgramLoader.cs
│   │   │   │   ├── StopCliOptions.cs
│   │   │   │   ├── StudioCliOptions.cs
│   │   │   │   └── VerbOptions.cs
│   │   │   ├── Plexus.Host.csproj
│   │   │   ├── Plexus.Interop.Broker.Redist.nuspec
│   │   │   ├── Plexus.Interop.Broker.Redist.targets
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   └── nlog.config
│   │   ├── Plexus.Interop.Apps.Manager/
│   │   │   ├── Generate.cmd
│   │   │   ├── IAppLaunchedEventConsumer.cs
│   │   │   ├── Internal/
│   │   │   │   ├── AppConnection.cs
│   │   │   │   ├── AppDto.cs
│   │   │   │   ├── AppInfo.cs
│   │   │   │   ├── AppLaunchedEventProvider.cs
│   │   │   │   ├── AppLaunchedEventSubscriber.cs
│   │   │   │   ├── AppLifecycleManager.cs
│   │   │   │   ├── AppLifecycleManagerClientClientRepository.cs
│   │   │   │   ├── AppRegistry.cs
│   │   │   │   ├── AppsDto.cs
│   │   │   │   ├── Generated/
│   │   │   │   │   └── interop/
│   │   │   │   │       ├── AppConnectionDescriptor.msg.g.cs
│   │   │   │   │       ├── AppLaunchMode.msg.g.cs
│   │   │   │   │       ├── AppLauncherService.msg.g.cs
│   │   │   │   │       ├── AppLauncherService.svc.g.cs
│   │   │   │   │       ├── AppLifecycleManager.app.g.cs
│   │   │   │   │       ├── AppLifecycleService.msg.g.cs
│   │   │   │   │       ├── AppLifecycleService.svc.g.cs
│   │   │   │   │       ├── AppMetadataService.msg.g.cs
│   │   │   │   │       ├── AppMetadataService.svc.g.cs
│   │   │   │   │       ├── AppRegistrationService.msg.g.cs
│   │   │   │   │       ├── AppRegistrationService.svc.g.cs
│   │   │   │   │       ├── ContextLinkage.msg.g.cs
│   │   │   │   │       ├── ContextLinkage.svc.g.cs
│   │   │   │   │       ├── InvocationDescriptor.msg.g.cs
│   │   │   │   │       ├── NativeAppLauncher.app.g.cs
│   │   │   │   │       ├── Options.msg.g.cs
│   │   │   │   │       └── UniqueId.msg.g.cs
│   │   │   │   ├── IAppLaunchedEventProvider.cs
│   │   │   │   ├── IAppLifecycleManagerClientClientRepository.cs
│   │   │   │   ├── IAppRegistryProvider.cs
│   │   │   │   ├── InteropContext.cs
│   │   │   │   ├── InteropContextFactory.cs
│   │   │   │   ├── JsonFileAppRegistryProvider.cs
│   │   │   │   ├── NativeAppLauncherClient.cs
│   │   │   │   ├── NativeAppLauncherParamsDto.cs
│   │   │   │   ├── ObservableExtensions.cs
│   │   │   │   ├── ProtobufHelper.cs
│   │   │   │   ├── Services/
│   │   │   │   │   ├── AppLifecycleServiceImpl.cs
│   │   │   │   │   ├── AppMetadataServiceImpl.cs
│   │   │   │   │   ├── AppRegistrationServiceImpl.cs
│   │   │   │   │   ├── ContextLinkage/
│   │   │   │   │   │   ├── AppConnectionsSet.cs
│   │   │   │   │   │   ├── AppContextBindingEvent.cs
│   │   │   │   │   │   ├── Context.cs
│   │   │   │   │   │   └── ContextsSet.cs
│   │   │   │   │   ├── ContextLinkageServiceImpl.cs
│   │   │   │   │   ├── IAppLifecycleService.cs
│   │   │   │   │   └── IAppMetadataService.cs
│   │   │   │   └── SubProcessLauncher.cs
│   │   │   └── Plexus.Interop.Apps.Manager.csproj
│   │   ├── Plexus.Interop.Apps.Manager.Contracts/
│   │   │   ├── AppConnectionEvent.cs
│   │   │   ├── ConnectionEventType.cs
│   │   │   ├── IAppConnectedEventProvider.cs
│   │   │   ├── IAppConnection.cs
│   │   │   ├── IAppLifecycleManager.cs
│   │   │   ├── IContextLinkageManager.cs
│   │   │   ├── IInteropContext.cs
│   │   │   ├── IInvocationEventProvider.cs
│   │   │   ├── InvocationDescriptor.cs
│   │   │   ├── InvocationFinishedEventDescriptor.cs
│   │   │   ├── InvocationResult.cs
│   │   │   ├── InvocationStartedEventDescriptor.cs
│   │   │   ├── Plexus.Interop.Apps.Manager.Contracts.csproj
│   │   │   ├── ResolveMode.cs
│   │   │   └── ResolvedConnection.cs
│   │   ├── Plexus.Interop.Broker/
│   │   │   ├── BrokerFactory.cs
│   │   │   ├── BrokerIsAlreadyRunningException.cs
│   │   │   ├── BrokerOptions.cs
│   │   │   ├── IBroker.cs
│   │   │   ├── Internal/
│   │   │   │   ├── Broker.cs
│   │   │   │   └── ServerConnectionListener.cs
│   │   │   └── Plexus.Interop.Broker.csproj
│   │   ├── Plexus.Interop.Broker.Core/
│   │   │   ├── BrokerException.cs
│   │   │   ├── BrokerProcessorFactory.cs
│   │   │   ├── Generate.cmd
│   │   │   ├── IBrokerProcessor.cs
│   │   │   ├── Internal/
│   │   │   │   ├── AppConnectionProcessor.cs
│   │   │   │   ├── AuthenticationHandler.cs
│   │   │   │   ├── BrokerProcessor.cs
│   │   │   │   ├── BrokerRegistryProvider.cs
│   │   │   │   ├── ClientRequestHandler.cs
│   │   │   │   ├── DiscoveryRequestHandler.cs
│   │   │   │   ├── IAppConnectionProcessor.cs
│   │   │   │   ├── IAuthenticationHandler.cs
│   │   │   │   ├── IClientRequestHandler.cs
│   │   │   │   ├── IDiscoveryRequestHandler.cs
│   │   │   │   ├── IInvocationRequestHandler.cs
│   │   │   │   ├── IRegistryService.cs
│   │   │   │   ├── InvocationRequestHandler.cs
│   │   │   │   ├── RegistryService.cs
│   │   │   │   └── interop.json
│   │   │   ├── Plexus.Interop.Broker.Core.csproj
│   │   │   └── Properties/
│   │   │       └── AsseblyInfo.cs
│   │   ├── Plexus.Interop.Broker.Core.Tests/
│   │   │   ├── Plexus.Interop.Broker.Core.Tests.csproj
│   │   │   ├── RegistryServiceTests.cs
│   │   │   └── RegistryServiceTests.interop.json
│   │   ├── Plexus.Interop.Client/
│   │   │   ├── ClientBase.cs
│   │   │   ├── ClientOptionsBuilderExtensions.cs
│   │   │   └── Plexus.Interop.Client.csproj
│   │   ├── Plexus.Interop.Client.Core/
│   │   │   ├── ClientDiscoveryInvokerExtensions.cs
│   │   │   ├── ClientFactory.cs
│   │   │   ├── ClientOptions.cs
│   │   │   ├── ClientOptionsBuilder.cs
│   │   │   ├── ContextLinkageOptions.cs
│   │   │   ├── DiscoveredMethod.cs
│   │   │   ├── DiscoveredService.cs
│   │   │   ├── IClient.cs
│   │   │   ├── IClientCallInvoker.cs
│   │   │   ├── IClientDiscoveryInvoker.cs
│   │   │   ├── IClientFactory.cs
│   │   │   ├── IClientStreamingMethodCall.cs
│   │   │   ├── IDuplexStreamingMethodCall.cs
│   │   │   ├── IMethod.cs
│   │   │   ├── IMethodCall.cs
│   │   │   ├── IServerStreamingMethodCall.cs
│   │   │   ├── IUnaryMethodCall.cs
│   │   │   ├── IUnaryMethodCall~1.cs
│   │   │   ├── Internal/
│   │   │   │   ├── Calls/
│   │   │   │   │   ├── ClientStreamingMethodCall.cs
│   │   │   │   │   ├── ClientStreamingMethodCallHandler.cs
│   │   │   │   │   ├── DuplexStreamingMethodCall.cs
│   │   │   │   │   ├── DuplexStreamingMethodCallHandler.cs
│   │   │   │   │   ├── MethodCallHandlerBase.cs
│   │   │   │   │   ├── ServerStreamingMethodCall.cs
│   │   │   │   │   ├── ServerStreamingMethodCallHandler.cs
│   │   │   │   │   ├── UnaryMethodCall.cs
│   │   │   │   │   └── UnaryMethodCallHandler.cs
│   │   │   │   ├── Client.cs
│   │   │   │   ├── ClientConnection.cs
│   │   │   │   ├── ClientConnectionFactory.cs
│   │   │   │   ├── ClientProtocol/
│   │   │   │   │   ├── Discovery/
│   │   │   │   │   │   ├── DiscoveryService.cs
│   │   │   │   │   │   └── IDiscoveryService.cs
│   │   │   │   │   └── Invocations/
│   │   │   │   │       ├── IIncomingInvocation.cs
│   │   │   │   │       ├── IIncomingInvocationFactory.cs
│   │   │   │   │       ├── IInvocation.cs
│   │   │   │   │       ├── IOutcomingInvocation.cs
│   │   │   │   │       ├── IOutcomingInvocationFactory.cs
│   │   │   │   │       ├── IncomingInvocation.cs
│   │   │   │   │       ├── IncomingInvocationDescriptor.cs
│   │   │   │   │       ├── IncomingInvocationFactory.cs
│   │   │   │   │       ├── IncomingStreamState.cs
│   │   │   │   │       ├── Invocation.cs
│   │   │   │   │       ├── InvocationMethodDescriptor.cs
│   │   │   │   │       ├── InvocationReceiveProcessor.cs
│   │   │   │   │       ├── InvocationSendProcessor.cs
│   │   │   │   │       ├── InvocationState.cs
│   │   │   │   │       ├── InvocationTargetDescriptor.cs
│   │   │   │   │       ├── OutcomingInvocation.cs
│   │   │   │   │       ├── OutcomingInvocationDescriptor.cs
│   │   │   │   │       └── OutcomingInvocationFactory.cs
│   │   │   │   ├── DiscoveredMethodInfo.cs
│   │   │   │   ├── IClientConnection.cs
│   │   │   │   ├── IMethodCallHandler.cs
│   │   │   │   └── MethodCallHandlers.cs
│   │   │   ├── Method.cs
│   │   │   ├── MethodCallContext.cs
│   │   │   ├── MethodCallDescriptor.cs
│   │   │   ├── MethodCallExtensions.cs
│   │   │   ├── MethodDelegates.cs
│   │   │   ├── MethodDiscoveryQuery.cs
│   │   │   ├── MethodReference.cs
│   │   │   ├── MethodType.cs
│   │   │   ├── Option.cs
│   │   │   ├── Plexus.Interop.Client.Core.csproj
│   │   │   ├── ProvidedMethodReference.cs
│   │   │   ├── ProvidedServiceDefinition.cs
│   │   │   ├── ProvidedServiceReference.cs
│   │   │   ├── ServiceDiscoveryQuery.cs
│   │   │   └── ServiceReference.cs
│   │   ├── Plexus.Interop.Client.Marshalling.Contracts/
│   │   │   ├── IMarshaller.cs
│   │   │   ├── IMarshallerProvider.cs
│   │   │   ├── Marshaller.cs
│   │   │   ├── NothingMarshaller.cs
│   │   │   └── Plexus.Interop.Client.Marshalling.Contracts.csproj
│   │   ├── Plexus.Interop.Client.Marshalling.Protobuf/
│   │   │   ├── Plexus.Interop.Client.Marshalling.Protobuf.csproj
│   │   │   └── ProtobufMarshallerProvider.cs
│   │   ├── Plexus.Interop.Client.Marshalling.Protobuf.Tests/
│   │   │   ├── Plexus.Interop.Client.Marshalling.Protobuf.Tests.csproj
│   │   │   └── ProtobufMarshallerProviderTests.cs
│   │   ├── Plexus.Interop.Metamodel/
│   │   │   ├── AnyMatchPattern.cs
│   │   │   ├── Application.cs
│   │   │   ├── CompositeMatchPattern.cs
│   │   │   ├── ConsumedMethod.cs
│   │   │   ├── ConsumedService.cs
│   │   │   ├── MatchPattern.cs
│   │   │   ├── Message.cs
│   │   │   ├── Method.cs
│   │   │   ├── Option.cs
│   │   │   ├── Plexus.Interop.Metamodel.csproj
│   │   │   ├── ProvidedMethod.cs
│   │   │   ├── ProvidedService.cs
│   │   │   ├── Registry.cs
│   │   │   └── Service.cs
│   │   ├── Plexus.Interop.Metamodel.Contracts/
│   │   │   ├── IApplication.cs
│   │   │   ├── IConsumedMethod.cs
│   │   │   ├── IConsumedService.cs
│   │   │   ├── IMatchPattern.cs
│   │   │   ├── IMessage.cs
│   │   │   ├── IMethod.cs
│   │   │   ├── IOption.cs
│   │   │   ├── IProvidedMethod.cs
│   │   │   ├── IProvidedService.cs
│   │   │   ├── IRegistry.cs
│   │   │   ├── IRegistryProvider.cs
│   │   │   ├── IService.cs
│   │   │   ├── LaunchMode.cs
│   │   │   ├── MatchType.cs
│   │   │   ├── MethodType.cs
│   │   │   └── Plexus.Interop.Metamodel.Contracts.csproj
│   │   ├── Plexus.Interop.Metamodel.Json/
│   │   │   ├── Internal/
│   │   │   │   ├── ApplicationDto.cs
│   │   │   │   ├── ConsumedMethodDto.cs
│   │   │   │   ├── ConsumedServiceDto.cs
│   │   │   │   ├── MethodDto.cs
│   │   │   │   ├── MethodTypeDto.cs
│   │   │   │   ├── OptionDto.cs
│   │   │   │   ├── OptionListExtensions.cs
│   │   │   │   ├── ProvidedMethodDto.cs
│   │   │   │   ├── ProvidedServiceDto.cs
│   │   │   │   ├── RegistryDto.cs
│   │   │   │   └── ServiceDto.cs
│   │   │   ├── JsonFileRegistryProvider.cs
│   │   │   ├── JsonRegistry.cs
│   │   │   └── Plexus.Interop.Metamodel.Json.csproj
│   │   ├── Plexus.Interop.Metamodel.Json.Tests/
│   │   │   ├── JsonRegistryProviderTests.cs
│   │   │   ├── Plexus.Interop.Metamodel.Json.Tests.csproj
│   │   │   └── interop.json
│   │   ├── Plexus.Interop.Protobuf/
│   │   │   ├── Plexus.Interop.Protobuf.csproj
│   │   │   ├── ProtobufConverter.cs
│   │   │   └── ProtobufExtensions.cs
│   │   ├── Plexus.Interop.Protocol/
│   │   │   ├── Internal/
│   │   │   │   ├── Connect/
│   │   │   │   │   ├── ConnectRequest.cs
│   │   │   │   │   └── ConnectResponse.cs
│   │   │   │   ├── ConsumedMethodReference.cs
│   │   │   │   ├── ConsumedServiceReference.cs
│   │   │   │   ├── Discovery/
│   │   │   │   │   ├── ContextLinkageOptions.cs
│   │   │   │   │   ├── DiscoveredMethod.cs
│   │   │   │   │   ├── DiscoveredService.cs
│   │   │   │   │   ├── DiscoveredServiceMethod.cs
│   │   │   │   │   ├── MethodDiscoveryRequest.cs
│   │   │   │   │   ├── MethodDiscoveryResponse.cs
│   │   │   │   │   ├── ServiceDiscoveryRequest.cs
│   │   │   │   │   └── ServiceDiscoveryResponse.cs
│   │   │   │   ├── Invocation/
│   │   │   │   │   ├── InvocationMessageHeader.cs
│   │   │   │   │   ├── InvocationMessageReceived.cs
│   │   │   │   │   ├── InvocationSendCompleted.cs
│   │   │   │   │   ├── InvocationStart.cs
│   │   │   │   │   ├── InvocationStartRequested.cs
│   │   │   │   │   ├── InvocationStarted.cs
│   │   │   │   │   └── InvocationStarting.cs
│   │   │   │   ├── Option.cs
│   │   │   │   ├── ProvidedMethodReference.cs
│   │   │   │   └── ProvidedServiceReference.cs
│   │   │   ├── Plexus.Interop.Protocol.csproj
│   │   │   └── ProtocolMessagePool.cs
│   │   ├── Plexus.Interop.Protocol.Common.Contracts/
│   │   │   ├── CompletionHeader.cs
│   │   │   ├── CompletionStatusHeader.cs
│   │   │   ├── ErrorHeader.cs
│   │   │   └── Plexus.Interop.Protocol.Common.Contracts.csproj
│   │   ├── Plexus.Interop.Protocol.Contracts/
│   │   │   ├── BrokerToClientRequestHandler.cs
│   │   │   ├── ClientToBrokerRequestHandler.cs
│   │   │   ├── Connect/
│   │   │   │   ├── IConnectProtocolMessageFactory.cs
│   │   │   │   ├── IConnectProtocolSerializer.cs
│   │   │   │   ├── IConnectRequest.cs
│   │   │   │   └── IConnectResponse.cs
│   │   │   ├── ContextLinkageDiscoveryMode.cs
│   │   │   ├── Discovery/
│   │   │   │   ├── DiscoveryMode.cs
│   │   │   │   ├── IDiscoveredMethod.cs
│   │   │   │   ├── IDiscoveredService.cs
│   │   │   │   ├── IDiscoveredServiceMethod.cs
│   │   │   │   ├── IDiscoveryProtocolMessageFactory.cs
│   │   │   │   ├── IDiscoveryProtocolSerializer.cs
│   │   │   │   ├── IMethodDiscoveryRequest.cs
│   │   │   │   ├── IMethodDiscoveryResponse.cs
│   │   │   │   ├── IServiceDiscoveryRequest.cs
│   │   │   │   ├── IServiceDiscoveryResponse.cs
│   │   │   │   └── MethodType.cs
│   │   │   ├── IBrokerToClientRequest.cs
│   │   │   ├── IClientToBrokerRequest.cs
│   │   │   ├── IConsumedMethodReference.cs
│   │   │   ├── IConsumedServiceReference.cs
│   │   │   ├── IContextLinkageOptions.cs
│   │   │   ├── IOption.cs
│   │   │   ├── IProtocolImplementation.cs
│   │   │   ├── IProtocolMessage.cs
│   │   │   ├── IProtocolMessageFactory.cs
│   │   │   ├── IProtocolSerializer.cs
│   │   │   ├── IProtocolSerializerFactory.cs
│   │   │   ├── IProvidedMethodReference.cs
│   │   │   ├── IProvidedServiceReference.cs
│   │   │   ├── Invocation/
│   │   │   │   ├── IInvocationMessage.cs
│   │   │   │   ├── IInvocationMessageHeader.cs
│   │   │   │   ├── IInvocationMessageReceived.cs
│   │   │   │   ├── IInvocationProtocolMessageFactory.cs
│   │   │   │   ├── IInvocationProtocolSerializer.cs
│   │   │   │   ├── IInvocationSendCompleted.cs
│   │   │   │   ├── IInvocationStart.cs
│   │   │   │   ├── IInvocationStartRequested.cs
│   │   │   │   ├── IInvocationStarted.cs
│   │   │   │   ├── IInvocationStarting.cs
│   │   │   │   ├── IInvocationTarget.cs
│   │   │   │   ├── InvocationMessageHandler.cs
│   │   │   │   └── InvocationTargetHandler.cs
│   │   │   ├── Plexus.Interop.Protocol.Contracts.csproj
│   │   │   ├── ProtocolImplementation.cs
│   │   │   └── ProtocolMessageFactoryExtensions.cs
│   │   ├── Plexus.Interop.Protocol.Protobuf/
│   │   │   ├── Internal/
│   │   │   │   ├── BrokerToClientRequestEnvelope.cs
│   │   │   │   ├── ClientToBrokerRequestEnvelope.cs
│   │   │   │   ├── ConnectRequest.cs
│   │   │   │   ├── ConnectResponse.cs
│   │   │   │   ├── ConsumedMethodReference.cs
│   │   │   │   ├── ConsumedServiceReference.cs
│   │   │   │   ├── ContextLinkageDiscoveryOptions.cs
│   │   │   │   ├── DiscoveredMethod.cs
│   │   │   │   ├── DiscoveredService.cs
│   │   │   │   ├── DiscoveredServiceMethod.cs
│   │   │   │   ├── Empty.cs
│   │   │   │   ├── InvocationMessageEnvelope.cs
│   │   │   │   ├── InvocationMessageHeader.cs
│   │   │   │   ├── InvocationMessageReceived.cs
│   │   │   │   ├── InvocationSendCompleted.cs
│   │   │   │   ├── InvocationStartRequest.cs
│   │   │   │   ├── InvocationStartRequested.cs
│   │   │   │   ├── InvocationStarted.cs
│   │   │   │   ├── InvocationStarting.cs
│   │   │   │   ├── MethodDiscoveryRequest.cs
│   │   │   │   ├── MethodDiscoveryResponse.cs
│   │   │   │   ├── Option.cs
│   │   │   │   ├── ProvidedMethodReference.cs
│   │   │   │   ├── ProvidedServiceReference.cs
│   │   │   │   ├── ServiceDiscoveryRequest.cs
│   │   │   │   └── ServiceDiscoveryResponse.cs
│   │   │   ├── Plexus.Interop.Protocol.Protobuf.csproj
│   │   │   ├── ProtobufProtocolSerializer.cs
│   │   │   └── ProtobufProtocolSerializerFactory.cs
│   │   ├── Plexus.Interop.Protocol.Protobuf.Tests/
│   │   │   ├── Plexus.Interop.Protocol.Protobuf.Tests.csproj
│   │   │   ├── ProtobufSerializerTests.cs
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Samples.CcyPairRateProvider/
│   │   │   ├── CcyPairRateProvider.cmd
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   ├── fx/
│   │   │   │   │   ├── CcyPairRateService.msg.g.cs
│   │   │   │   │   └── CcyPairRateService.svc.g.cs
│   │   │   │   ├── interop/
│   │   │   │   │   └── Options.msg.g.cs
│   │   │   │   └── vendor_a/
│   │   │   │       └── fx/
│   │   │   │           └── CcyPairRateProvider.app.g.cs
│   │   │   ├── Plexus.Interop.Samples.CcyPairRateProvider.csproj
│   │   │   ├── Program.cs
│   │   │   └── Properties/
│   │   │       └── launchSettings.json
│   │   ├── Plexus.Interop.Samples.CcyPairRateViewer/
│   │   │   ├── CcyPairRateViewer.cmd
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   ├── fx/
│   │   │   │   │   ├── CcyPairRateService.msg.g.cs
│   │   │   │   │   └── CcyPairRateService.svc.g.cs
│   │   │   │   ├── interop/
│   │   │   │   │   └── Options.msg.g.cs
│   │   │   │   └── vendor_b/
│   │   │   │       └── fx/
│   │   │   │           └── CcyPairRateViewer.app.g.cs
│   │   │   ├── Plexus.Interop.Samples.CcyPairRateViewer.csproj
│   │   │   ├── Program.cs
│   │   │   └── Properties/
│   │   │       └── launchSettings.json
│   │   ├── Plexus.Interop.Samples.GreetingClient/
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   └── interop/
│   │   │   │       ├── Options.msg.g.cs
│   │   │   │       └── samples/
│   │   │   │           ├── GreetingClient.app.g.cs
│   │   │   │           ├── GreetingService.msg.g.cs
│   │   │   │           └── GreetingService.svc.g.cs
│   │   │   ├── LaunchGreetingClient.cmd
│   │   │   ├── Plexus.Interop.Samples.GreetingClient.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   └── nlog.config
│   │   ├── Plexus.Interop.Samples.GreetingServer/
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   └── interop/
│   │   │   │       ├── Options.msg.g.cs
│   │   │   │       └── samples/
│   │   │   │           ├── GreetingServer.app.g.cs
│   │   │   │           ├── GreetingService.msg.g.cs
│   │   │   │           └── GreetingService.svc.g.cs
│   │   │   ├── LaunchGreetingServer.cmd
│   │   │   ├── Plexus.Interop.Samples.GreetingServer.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   └── nlog.config
│   │   ├── Plexus.Interop.Samples.Metadata/
│   │   │   └── Plexus.Interop.Samples.Metadata.csproj
│   │   ├── Plexus.Interop.Testing/
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   └── interop/
│   │   │   │       ├── AppConnectionDescriptor.msg.g.cs
│   │   │   │       ├── AppLaunchMode.msg.g.cs
│   │   │   │       ├── AppLauncherService.msg.g.cs
│   │   │   │       ├── AppLauncherService.svc.g.cs
│   │   │   │       ├── AppLifecycleService.msg.g.cs
│   │   │   │       ├── AppLifecycleService.svc.g.cs
│   │   │   │       ├── AppMetadataService.msg.g.cs
│   │   │   │       ├── AppMetadataService.svc.g.cs
│   │   │   │       ├── AppRegistrationService.msg.g.cs
│   │   │   │       ├── AppRegistrationService.svc.g.cs
│   │   │   │       ├── ContextLinkage.msg.g.cs
│   │   │   │       ├── ContextLinkage.svc.g.cs
│   │   │   │       ├── InvocationDescriptor.msg.g.cs
│   │   │   │       ├── Options.msg.g.cs
│   │   │   │       ├── UniqueId.msg.g.cs
│   │   │   │       └── testing/
│   │   │   │           ├── EchoClient.app.g.cs
│   │   │   │           ├── EchoServer.app.g.cs
│   │   │   │           ├── EchoService.msg.g.cs
│   │   │   │           ├── EchoService.svc.g.cs
│   │   │   │           ├── GreetingService.msg.g.cs
│   │   │   │           ├── GreetingService.svc.g.cs
│   │   │   │           └── TestAppLauncher.app.g.cs
│   │   │   ├── ITestBroker.cs
│   │   │   ├── NLog.config
│   │   │   ├── ObservableExtensions.cs
│   │   │   ├── Plexus.Interop.Testing.csproj
│   │   │   ├── Properties/
│   │   │   │   └── AssemblyInfo.cs
│   │   │   ├── TestAppLauncher.cs
│   │   │   ├── TestBroker.cs
│   │   │   ├── TestBrokerConfig/
│   │   │   │   ├── NLog.config
│   │   │   │   └── metadata/
│   │   │   │       ├── apps.json
│   │   │   │       └── interop.json
│   │   │   ├── TestBrokerFixture.cs
│   │   │   ├── TestClientFactory.cs
│   │   │   └── UniqueId.Extensions.cs
│   │   ├── Plexus.Interop.Tests/
│   │   │   ├── AppLifecycleServiceIntegrationTests.cs
│   │   │   ├── BaseClientBrokerTestsSuite.cs
│   │   │   ├── ClientBrokerIntegrationTests.cs
│   │   │   ├── ContextLinkageIntegrationTests.cs
│   │   │   ├── Plexus.Interop.Tests.csproj
│   │   │   ├── SpecificAppInstanceCallIntegrationTests.cs
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Tests.sln
│   │   ├── Plexus.Interop.Transport/
│   │   │   ├── Internal/
│   │   │   │   ├── ChannelMessage.cs
│   │   │   │   ├── FrameMessage.cs
│   │   │   │   ├── ITransportReceiveProcessor.cs
│   │   │   │   ├── ITransportSendProcessor.cs
│   │   │   │   ├── TransportChannel.cs
│   │   │   │   ├── TransportChannelSendProcessor.cs
│   │   │   │   ├── TransportClient.cs
│   │   │   │   ├── TransportConnection.cs
│   │   │   │   ├── TransportConnectionFactory.cs
│   │   │   │   ├── TransportConnectionStateValidator.cs
│   │   │   │   ├── TransportReceiveProcessor.cs
│   │   │   │   ├── TransportSendProcessor.cs
│   │   │   │   ├── TransportServer.cs
│   │   │   │   └── TransportUtils.cs
│   │   │   ├── Plexus.Interop.Transport.csproj
│   │   │   ├── TransportChannelUtils.cs
│   │   │   ├── TransportClientFactory.cs
│   │   │   └── TransportServerFactory.cs
│   │   ├── Plexus.Interop.Transport.Contracts/
│   │   │   ├── ITransportChannel.cs
│   │   │   ├── ITransportClient.cs
│   │   │   ├── ITransportConnection.cs
│   │   │   ├── ITransportServer.cs
│   │   │   ├── Plexus.Interop.Transport.Contracts.csproj
│   │   │   ├── TransportExtensions.cs
│   │   │   └── TransportMessageFrame.cs
│   │   ├── Plexus.Interop.Transport.Pipes.Tests/
│   │   │   ├── PipeTransportTests.cs
│   │   │   ├── Plexus.Interop.Transport.Pipes.Tests.csproj
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Transport.Protocol/
│   │   │   ├── Internal/
│   │   │   │   ├── GetBodyLengthHandler.cs
│   │   │   │   ├── TransportChannelCloseHeader.cs
│   │   │   │   ├── TransportChannelOpenHeader.cs
│   │   │   │   ├── TransportConnectionCloseHeader.cs
│   │   │   │   ├── TransportConnectionOpenHeader.cs
│   │   │   │   └── TransportFrameHeader.cs
│   │   │   ├── MessagingReceiveProcessor.cs
│   │   │   ├── MessagingSendProcessor.cs
│   │   │   ├── Plexus.Interop.Transport.Protocol.csproj
│   │   │   └── TransportHeaderPool.cs
│   │   ├── Plexus.Interop.Transport.Protocol.Contracts/
│   │   │   ├── IChannelHeaderFactory.cs
│   │   │   ├── IChannelOpenHeader.cs
│   │   │   ├── IConnectionHeaderFactory.cs
│   │   │   ├── IMessagingReceiveProcessor.cs
│   │   │   ├── IMessagingSendProcessor.cs
│   │   │   ├── ITransportChannelCloseHeader.cs
│   │   │   ├── ITransportChannelHeader.cs
│   │   │   ├── ITransportChannelHeaderHandler.cs
│   │   │   ├── ITransportChannelOpenHeader.cs
│   │   │   ├── ITransportConnectionCloseHeader.cs
│   │   │   ├── ITransportConnectionHeader.cs
│   │   │   ├── ITransportConnectionHeaderHandler.cs
│   │   │   ├── ITransportConnectionOpenHeader.cs
│   │   │   ├── ITransportFrameHeader.cs
│   │   │   ├── ITransportHeader.cs
│   │   │   ├── ITransportHeaderFactory.cs
│   │   │   ├── ITransportHeaderHandler.cs
│   │   │   ├── MetadataViolationException.cs
│   │   │   ├── Plexus.Interop.Transport.Protocol.Contracts.csproj
│   │   │   ├── ProtocolException.cs
│   │   │   ├── RemoteErrorException.cs
│   │   │   ├── RemoteException.cs
│   │   │   ├── Serialization/
│   │   │   │   ├── ITransportProtocolDeserializer.cs
│   │   │   │   ├── ITransportProtocolSerializationProvider.cs
│   │   │   │   └── ITransportProtocolSerializer.cs
│   │   │   ├── TransportChannelHeaderHandler.cs
│   │   │   ├── TransportConnectionHeaderHandler.cs
│   │   │   ├── TransportHeaderHandler.cs
│   │   │   └── TransportMessage.cs
│   │   ├── Plexus.Interop.Transport.Protocol.Protobuf/
│   │   │   ├── Internal/
│   │   │   │   ├── ChannelCloseHeader.cs
│   │   │   │   ├── ChannelOpenHeader.cs
│   │   │   │   ├── ConnectionCloseHeader.cs
│   │   │   │   ├── ConnectionOpenHeader.cs
│   │   │   │   ├── Header.cs
│   │   │   │   ├── MessageFrameHeader.cs
│   │   │   │   ├── ProtobufTransportProtocolDeserializer.cs
│   │   │   │   └── ProtobufTransportProtocolSerializer.cs
│   │   │   ├── Plexus.Interop.Transport.Protocol.Protobuf.csproj
│   │   │   └── ProtobufTransportSerialization.cs
│   │   ├── Plexus.Interop.Transport.Protocol.Tests/
│   │   │   ├── MessagingTests.cs
│   │   │   └── Plexus.Interop.Transport.Protocol.Tests.csproj
│   │   ├── Plexus.Interop.Transport.Testing/
│   │   │   ├── Plexus.Interop.Transport.Testing.csproj
│   │   │   └── TransportTestsSuite.cs
│   │   ├── Plexus.Interop.Transport.Transmission.Contracts/
│   │   │   ├── ITransmissionClient.cs
│   │   │   ├── ITransmissionConnection.cs
│   │   │   ├── ITransmissionServer.cs
│   │   │   └── Plexus.Interop.Transport.Transmission.Contracts.csproj
│   │   ├── Plexus.Interop.Transport.Transmission.Pipes/
│   │   │   ├── Internal/
│   │   │   │   ├── PipeTransmissionClient.cs
│   │   │   │   └── PipeTransmissionServer.cs
│   │   │   ├── PipeTranmissionServerFactory.cs
│   │   │   ├── PipeTransmissionClientFactory.cs
│   │   │   └── Plexus.Interop.Transport.Transmission.Pipes.csproj
│   │   ├── Plexus.Interop.Transport.Transmission.Pipes.Tests/
│   │   │   ├── PipeTransmissionTests.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.Pipes.Tests.csproj
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Transport.Transmission.Streams/
│   │   │   ├── Internal/
│   │   │   │   ├── StreamTransmissionReader.cs
│   │   │   │   └── StreamTransmissionWriter.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.Streams.csproj
│   │   │   └── StreamTransmissionConnection.cs
│   │   ├── Plexus.Interop.Transport.Transmission.Testing/
│   │   │   ├── Plexus.Interop.Transport.Transmission.Testing.csproj
│   │   │   └── TransmissionTestsSuite.cs
│   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Client/
│   │   │   ├── Internal/
│   │   │   │   ├── WebSocketClientTransmissionConnection.cs
│   │   │   │   ├── WebSocketClientTransmissionReader.cs
│   │   │   │   └── WebSocketClientTransmissionWriter.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Client.csproj
│   │   │   └── WebSocketTransmissionClient.cs
│   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Server/
│   │   │   ├── Internal/
│   │   │   │   ├── WebSocketServerTransmissionConnection.cs
│   │   │   │   ├── WebSocketServerTransmissionReader.cs
│   │   │   │   ├── WebSocketServerTransmissionWriter.cs
│   │   │   │   └── WebSocketTransmissionServer.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.csproj
│   │   │   ├── WebSocketTransmissionServerFactory.cs
│   │   │   └── WebSocketTransmissionServerOptions.cs
│   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.Fleck/
│   │   │   ├── Internal/
│   │   │   │   ├── WebSocketServerTransmissionConnection.cs
│   │   │   │   ├── WebSocketServerTransmissionReader.cs
│   │   │   │   ├── WebSocketServerTransmissionWriter.cs
│   │   │   │   └── WebSocketTransmissionServer.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.Fleck.csproj
│   │   │   ├── WebSocketTransmissionServerFactory.cs
│   │   │   └── WebSocketTransmissionServerOptions.cs
│   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Tests/
│   │   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Tests.csproj
│   │   │   ├── WebSocketSecureTransmissionTests.cs
│   │   │   ├── WebSocketTransmissionTests.cs
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Transport.Utils/
│   │   │   ├── IServerStateReader.cs
│   │   │   ├── IServerStateWriter.cs
│   │   │   ├── Plexus.Interop.Transport.Utils.csproj
│   │   │   ├── ServerStateReader.cs
│   │   │   ├── ServerStateUtils.cs
│   │   │   └── ServerStateWriter.cs
│   │   ├── Plexus.Interop.Transport.WebSockets.Tests/
│   │   │   ├── Plexus.Interop.Transport.WebSockets.Tests.csproj
│   │   │   ├── WebSocketSecureTransportTests.cs
│   │   │   ├── WebSocketTransportTests.cs
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.sln
│   │   ├── Plexus.Interop.sln.DotSettings
│   │   ├── Plexus.Logging/
│   │   │   ├── ILogger.cs
│   │   │   ├── ILoggerFactory.cs
│   │   │   ├── LogConfig.cs
│   │   │   ├── LogLevel.cs
│   │   │   ├── LogManager.cs
│   │   │   ├── LoggerExtensions.Any.cs
│   │   │   ├── LoggerExtensions.Debug.cs
│   │   │   ├── LoggerExtensions.Error.cs
│   │   │   ├── LoggerExtensions.Fatal.cs
│   │   │   ├── LoggerExtensions.Info.cs
│   │   │   ├── LoggerExtensions.Trace.cs
│   │   │   ├── LoggerExtensions.Warn.cs
│   │   │   ├── NoopLogger.cs
│   │   │   ├── NoopLoggerFactory.cs
│   │   │   ├── Plexus.Logging.csproj
│   │   │   └── TypeExtensions.cs
│   │   ├── Plexus.Logging.CommonLogging/
│   │   │   ├── Logger.cs
│   │   │   ├── LoggerFactory.cs
│   │   │   ├── LoggingInitializer.cs
│   │   │   └── Plexus.Logging.CommonLogging.csproj
│   │   ├── Plexus.Logging.NLog/
│   │   │   ├── AsyncExceptionLayoutRenderer.cs
│   │   │   ├── Logger.cs
│   │   │   ├── LoggerFactory.cs
│   │   │   ├── LoggingInitializer.cs
│   │   │   ├── Plexus.Logging.NLog.csproj
│   │   │   └── WorkDirLayoutRenderer.cs
│   │   ├── Plexus.Utils/
│   │   │   ├── ArrayConstants.cs
│   │   │   ├── AsyncHelper.cs
│   │   │   ├── AwaitableCancellationToken.cs
│   │   │   ├── BaseJsonFileRegistryProvider.cs
│   │   │   ├── Channels/
│   │   │   │   ├── BufferedChannel.cs
│   │   │   │   └── ChannelUtils.cs
│   │   │   ├── EqualityHelper.cs
│   │   │   ├── ExceptionHelper.cs
│   │   │   ├── FileSystemUtils.cs
│   │   │   ├── FormattingUtils.cs
│   │   │   ├── JsonConvert.cs
│   │   │   ├── Latch.cs
│   │   │   ├── Plexus.Utils.csproj
│   │   │   ├── Pools/
│   │   │   │   ├── ObjectPool.cs
│   │   │   │   ├── PooledBuffer.cs
│   │   │   │   ├── PooledBufferExtensions.cs
│   │   │   │   └── PooledObject.cs
│   │   │   ├── Processes/
│   │   │   │   └── ProcessBase.cs
│   │   │   ├── Promise.cs
│   │   │   ├── Promise`1.cs
│   │   │   ├── Properties/
│   │   │   │   └── AssemblyInfo.cs
│   │   │   ├── StreamExtensions.cs
│   │   │   ├── TaskConstants.cs
│   │   │   ├── TaskConstants`1.cs
│   │   │   ├── TaskExtensions.cs
│   │   │   ├── TaskHelper.cs
│   │   │   ├── TaskLoggingExtensions.cs
│   │   │   ├── TaskRunner.cs
│   │   │   ├── TimeoutConstants.cs
│   │   │   └── ValueTask.cs
│   │   ├── Plexus.Utils.Testing/
│   │   │   ├── DisplayTestMethodNameAttribute.cs
│   │   │   ├── Plexus.Utils.Testing.csproj
│   │   │   ├── RandomExtensions.cs
│   │   │   ├── ShoudlyExtensions.cs
│   │   │   ├── TestingInitializer.cs
│   │   │   └── TestsSuite.cs
│   │   ├── Plexus.Utils.Testing.Shared/
│   │   │   ├── DefaultTestCollection.cs
│   │   │   ├── NLog.config
│   │   │   ├── Plexus.Utils.Testing.Shared.projitems
│   │   │   └── Plexus.Utils.Testing.Shared.shproj
│   │   └── Plexus.Utils.Tests/
│   │       ├── Channels/
│   │       │   └── BufferedChannelTests.cs
│   │       ├── Plexus.Utils.Tests.csproj
│   │       ├── PromiseTests.cs
│   │       └── UniqueIdTests.cs
│   └── tests.cmd
├── docs/
│   ├── build.gradle
│   └── src/
│       └── main/
│           ├── asciidoc/
│           │   ├── app-registry-schema.json
│           │   ├── clone-and-build.adoc
│           │   ├── concepts-components.adoc
│           │   ├── concepts-definitions.adoc
│           │   ├── concepts-features.adoc
│           │   ├── concepts-overview.adoc
│           │   ├── getting-started-how-to-build.adoc
│           │   ├── getting-started-how-to-run-samples.adoc
│           │   ├── getting-started-repository-structure.adoc
│           │   ├── guides-how-to-write-custom-app-launcher.adoc
│           │   ├── guides-interop-integration-workflow.adoc
│           │   ├── guides-interop-invocation-workflow.adoc
│           │   ├── guides-quick-start-dotnet.adoc
│           │   ├── guides-quick-start-invocation-workflow.adoc
│           │   ├── guides-quick-start-launch-app.adoc
│           │   ├── guides-quick-start-launch-broker-step.adoc
│           │   ├── guides-quick-start-web.adoc
│           │   ├── guides-quick-start.adoc
│           │   ├── guides-system-requirements.adoc
│           │   ├── guides-tools.adoc
│           │   ├── images/
│           │   │   ├── high-level-architecture.graphml
│           │   │   ├── interop-integration.graphml
│           │   │   └── star-schema.graphml
│           │   ├── index.adoc
│           │   ├── spec-app-registry.adoc
│           │   ├── spec-interop-registry.adoc
│           │   └── spec-typescript-client-api.adoc
│           └── typescript/
│               └── interface.ts
├── dsl/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gen/
│   │   ├── build.gradle
│   │   ├── cli/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── db/
│   │   │       │   │           └── plexus/
│   │   │       │   │               └── interop/
│   │   │       │   │                   └── dsl/
│   │   │       │   │                       └── gen/
│   │   │       │   │                           └── cli/
│   │   │       │   │                               ├── CLISetup.xtend
│   │   │       │   │                               ├── CLIStandaloneSetup.xtend
│   │   │       │   │                               ├── Main.java
│   │   │       │   │                               └── ParametersParser.java
│   │   │       │   └── resources/
│   │   │       │       └── plugin.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── cli/
│   │   │                                           └── ParametersParserTest.java
│   │   ├── common/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── com/
│   │   │       │           └── db/
│   │   │       │               └── plexus/
│   │   │       │                   └── interop/
│   │   │       │                       └── dsl/
│   │   │       │                           └── gen/
│   │   │       │                               ├── ApplicationCodeGenerator.java
│   │   │       │                               ├── BaseGenTask.java
│   │   │       │                               ├── BasePlexusIDLGenerator.xtend
│   │   │       │                               ├── CodeOutputGenerator.java
│   │   │       │                               ├── Entry.java
│   │   │       │                               ├── EntryPoint.java
│   │   │       │                               ├── GenTask.java
│   │   │       │                               ├── GenUtils.xtend
│   │   │       │                               ├── PlexusGenConfig.java
│   │   │       │                               ├── PlexusGeneratorModule.xtend
│   │   │       │                               ├── ResourceSetValidator.xtend
│   │   │       │                               ├── errors/
│   │   │       │                               │   └── CodeGenerationException.java
│   │   │       │                               └── util/
│   │   │       │                                   ├── CombinedFilePathMatcher.java
│   │   │       │                                   ├── FileUtils.java
│   │   │       │                                   ├── ProcessResult.java
│   │   │       │                                   ├── ProcessUtils.java
│   │   │       │                                   └── SimplePathMatcher.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       ├── BaseCodeGenTest.java
│   │   │                                       └── util/
│   │   │                                           ├── CombinedFilePathMatcherTest.java
│   │   │                                           └── FileUtilsTest.java
│   │   ├── csharp/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── csharp/
│   │   │                                           ├── CsharpCodeGenerator.xtend
│   │   │                                           └── CsharpGenTask.xtend
│   │   ├── js/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── com/
│   │   │       │           └── db/
│   │   │       │               └── plexus/
│   │   │       │                   └── interop/
│   │   │       │                       └── dsl/
│   │   │       │                           └── gen/
│   │   │       │                               └── js/
│   │   │       │                                   ├── JsComponentApiGenerator.xtend
│   │   │       │                                   └── JsGenTask.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── db/
│   │   │           │           └── plexus/
│   │   │           │               └── interop/
│   │   │           │                   └── dsl/
│   │   │           │                       └── gen/
│   │   │           │                           └── js/
│   │   │           │                               └── tests/
│   │   │           │                                   └── JsComponentApiGeneratorTest.xtend
│   │   │           └── resources/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── js/
│   │   │                                           └── tests/
│   │   │                                               └── expected.data
│   │   ├── meta/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── com/
│   │   │       │           └── db/
│   │   │       │               └── plexus/
│   │   │       │                   └── interop/
│   │   │       │                       └── dsl/
│   │   │       │                           ├── gen/
│   │   │       │                           │   └── meta/
│   │   │       │                           │       ├── ListMetadataFilesTask.xtend
│   │   │       │                           │       ├── MetaJsonGenTask.xtend
│   │   │       │                           │       ├── MetaJsonGenerator.xtend
│   │   │       │                           │       ├── MetaPatchValidatorTask.xtend
│   │   │       │                           │       └── MetaValidatorTask.xtend
│   │   │       │                           └── validation/
│   │   │       │                               ├── Issues.xtend
│   │   │       │                               ├── MetadataPatchValidator.xtend
│   │   │       │                               └── rules/
│   │   │       │                                   ├── NoAppsDeletedRule.xtend
│   │   │       │                                   ├── NoFieldsChangedRule.xtend
│   │   │       │                                   ├── NoFieldsDeletedRule.xtend
│   │   │       │                                   ├── NoMessagesDeletedRule.xtend
│   │   │       │                                   ├── NoMethodTypesChangedRule.xtend
│   │   │       │                                   ├── NoMethodsDeletedRule.xtend
│   │   │       │                                   ├── NoServiceDeletedRule.xtend
│   │   │       │                                   ├── RulesModule.xtend
│   │   │       │                                   └── UpdateRule.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── db/
│   │   │           │           └── plexus/
│   │   │           │               └── interop/
│   │   │           │                   └── dsl/
│   │   │           │                       ├── gen/
│   │   │           │                       │   └── metadata/
│   │   │           │                       │       └── tests/
│   │   │           │                       │           ├── MetaJsonGeneratorTest.xtend
│   │   │           │                       │           └── MetaValidatorTaskTest.xtend
│   │   │           │                       └── validation/
│   │   │           │                           └── rules/
│   │   │           │                               ├── BaseRuleTest.xtend
│   │   │           │                               ├── NoAppsDeletedRuleTest.xtend
│   │   │           │                               ├── NoFieldsChangedRuleTest.xtend
│   │   │           │                               ├── NoFieldsDeletedRuleTest.xtend
│   │   │           │                               ├── NoMessagesDeletedRuleTest.xtend
│   │   │           │                               ├── NoMethodTypesChangedRuleTest.xtend
│   │   │           │                               ├── NoMethodsDeletedRuleTest.xtend
│   │   │           │                               └── NoServiceDeletedRuleTest.xtend
│   │   │           └── resources/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── metadata/
│   │   │                                           └── tests/
│   │   │                                               └── expected.json
│   │   ├── proto/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── proto/
│   │   │                                           ├── ProtoGenTask.xtend
│   │   │                                           └── ProtoOption.xtend
│   │   ├── test/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── db/
│   │   │           │           └── plexus/
│   │   │           │               └── interop/
│   │   │           │                   └── dsl/
│   │   │           │                       └── gen/
│   │   │           │                           └── test/
│   │   │           │                               ├── InteropLangInjectionProvider.java
│   │   │           │                               └── ResourceUtils.xtend
│   │   │           └── resources/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── test/
│   │   │                                           ├── components/
│   │   │                                           │   ├── component_a.interop
│   │   │                                           │   ├── component_a_invalid.interop
│   │   │                                           │   └── component_c.interop
│   │   │                                           ├── model/
│   │   │                                           │   ├── messages.proto
│   │   │                                           │   ├── missed_message.proto
│   │   │                                           │   ├── missed_message_field.proto
│   │   │                                           │   ├── options.proto
│   │   │                                           │   └── updated_message_fields.proto
│   │   │                                           └── services/
│   │   │                                               ├── deleted_service.proto
│   │   │                                               ├── deleted_service_method.proto
│   │   │                                               ├── services.proto
│   │   │                                               └── updated_service_methods.proto
│   │   └── ts/
│   │       ├── build.gradle
│   │       └── src/
│   │           ├── main/
│   │           │   └── java/
│   │           │       └── com/
│   │           │           └── db/
│   │           │               └── plexus/
│   │           │                   └── interop/
│   │           │                       └── dsl/
│   │           │                           └── gen/
│   │           │                               └── ts/
│   │           │                                   ├── TsGenTask.java
│   │           │                                   └── TypescriptApplicationApiGenerator.xtend
│   │           └── test/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── db/
│   │               │           └── plexus/
│   │               │               └── interop/
│   │               │                   └── dsl/
│   │               │                       └── gen/
│   │               │                           └── ts/
│   │               │                               └── tests/
│   │               │                                   └── TypescriptComponentApiGeneratorTest.xtend
│   │               └── resources/
│   │                   └── com/
│   │                       └── db/
│   │                           └── plexus/
│   │                               └── interop/
│   │                                   └── dsl/
│   │                                       └── gen/
│   │                                           └── ts/
│   │                                               └── tests/
│   │                                                   └── expected.data
│   ├── gradle.properties
│   ├── ide-common/
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── db/
│   │                       └── plexus/
│   │                           └── interop/
│   │                               └── ide/
│   │                                   ├── assist/
│   │                                   │   └── ImportContentProvider.java
│   │                                   └── server/
│   │                                       └── DebugServerLauncher.java
│   ├── interop-lang/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── db/
│   │       │   │           └── plexus/
│   │       │   │               └── interop/
│   │       │   │                   └── dsl/
│   │       │   │                       ├── GenerateInteropLang.mwe2
│   │       │   │                       ├── GlobalLangConfigHolder.java
│   │       │   │                       ├── InteropLang.xtext
│   │       │   │                       ├── InteropLangRuntimeModule.xtend
│   │       │   │                       ├── InteropLangStandaloneSetup.xtend
│   │       │   │                       ├── InteropLangUtils.xtend
│   │       │   │                       ├── formatting2/
│   │       │   │                       │   └── InteropLangFormatter.xtend
│   │       │   │                       ├── generator/
│   │       │   │                       │   └── InteropLangGenerator.xtend
│   │       │   │                       ├── scoping/
│   │       │   │                       │   ├── InteropLangQualifiedNameProvider.xtend
│   │       │   │                       │   └── InteropLangScopeProvider.xtend
│   │       │   │                       └── validation/
│   │       │   │                           └── InteropLangValidator.xtend
│   │       │   └── resources/
│   │       │       └── interop/
│   │       │           ├── app_connection_descriptor.proto
│   │       │           ├── app_launch_mode.proto
│   │       │           ├── app_launcher_service.proto
│   │       │           ├── app_lifecycle_manager.interop
│   │       │           ├── app_lifecycle_service.proto
│   │       │           ├── app_metadata_service.proto
│   │       │           ├── app_registration_service.proto
│   │       │           ├── command_line_tool.interop
│   │       │           ├── context_linkage.proto
│   │       │           ├── descriptor.proto
│   │       │           ├── invocation_descriptor.proto
│   │       │           ├── native_app_launcher.interop
│   │       │           ├── options.proto
│   │       │           ├── testing/
│   │       │           │   ├── echo_client.interop
│   │       │           │   ├── echo_server.interop
│   │       │           │   ├── echo_service.proto
│   │       │           │   ├── echo_service_options.proto
│   │       │           │   ├── greeting_service.proto
│   │       │           │   └── test_app_launcher.interop
│   │       │           └── unique_id.proto
│   │       └── test/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── db/
│   │           │           └── plexus/
│   │           │               └── interop/
│   │           │                   └── dsl/
│   │           │                       └── tests/
│   │           │                           ├── InteropLangInjectionProvider.java
│   │           │                           └── InteropLangParsingTest.xtend
│   │           └── resources/
│   │               └── com/
│   │                   └── db/
│   │                       └── plexus/
│   │                           └── interop/
│   │                               └── dsl/
│   │                                   └── tests/
│   │                                       ├── example1.interop
│   │                                       ├── example1.proto
│   │                                       ├── example2.interop
│   │                                       ├── example3.interop
│   │                                       ├── provide_as_alias.interop
│   │                                       ├── provide_duplicate.interop
│   │                                       ├── provide_duplicate_option.interop
│   │                                       ├── subfolder/
│   │                                       │   └── example2.proto
│   │                                       └── wrong.interop
│   ├── interop-lang-vscode/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   ├── launch.json
│   │   │   └── tasks.json
│   │   ├── .vscodeignore
│   │   ├── README.md
│   │   ├── build.gradle
│   │   ├── interop.configuration.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── extension.ts
│   │   ├── syntaxes/
│   │   │   ├── interop.tmLanguage
│   │   │   └── proto.tmLanguage
│   │   └── tsconfig.json
│   ├── interop-lang.ide/
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── db/
│   │                       └── plexus/
│   │                           └── interop/
│   │                               └── dsl/
│   │                                   └── ide/
│   │                                       ├── InteropLangIdeModule.xtend
│   │                                       ├── InteropLangIdeSetup.xtend
│   │                                       ├── assist/
│   │                                       │   ├── InteropContentProposalProvider.java
│   │                                       │   └── InteropCrossRefProposalProvider.java
│   │                                       └── server/
│   │                                           ├── InteropDebugServerLauncher.java
│   │                                           ├── InteropLangServerModule.java
│   │                                           ├── InteropLanguageServer.java
│   │                                           └── StdIOServerLauncher.java
│   ├── model/
│   │   ├── META-INF/
│   │   │   └── MANIFEST.MF
│   │   ├── build.gradle
│   │   ├── build.properties
│   │   ├── plugin.properties
│   │   ├── plugin.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               ├── interop.xcore
│   │               └── proto.xcore
│   ├── proto-lang/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── db/
│   │       │   │           └── plexus/
│   │       │   │               └── interop/
│   │       │   │                   └── dsl/
│   │       │   │                       └── protobuf/
│   │       │   │                           ├── GenerateProtoLang.mwe2
│   │       │   │                           ├── ProtoLang.xtext
│   │       │   │                           ├── ProtoLangConfig.xtend
│   │       │   │                           ├── ProtoLangImportResolver.xtend
│   │       │   │                           ├── ProtoLangRuntimeModule.xtend
│   │       │   │                           ├── ProtoLangStandaloneSetup.xtend
│   │       │   │                           ├── ProtoLangUtils.xtend
│   │       │   │                           ├── StaticConfigHolder.java
│   │       │   │                           ├── formatting2/
│   │       │   │                           │   └── ProtoLangFormatter.xtend
│   │       │   │                           ├── generator/
│   │       │   │                           │   └── ProtoLangGenerator.xtend
│   │       │   │                           ├── scoping/
│   │       │   │                           │   ├── ProtoLangGlobalScopeProvider.xtend
│   │       │   │                           │   ├── ProtoLangLocalScopeProvider.xtend
│   │       │   │                           │   ├── ProtoLangQualifiedNameProvider.xtend
│   │       │   │                           │   └── ProtoLangScopeProvider.xtend
│   │       │   │                           └── validation/
│   │       │   │                               └── ProtoLangValidator.xtend
│   │       │   └── resources/
│   │       │       └── google/
│   │       │           └── protobuf/
│   │       │               ├── any.proto
│   │       │               ├── api.proto
│   │       │               ├── descriptor.proto
│   │       │               ├── duration.proto
│   │       │               ├── empty.proto
│   │       │               ├── field_mask.proto
│   │       │               ├── source_context.proto
│   │       │               ├── struct.proto
│   │       │               ├── timestamp.proto
│   │       │               ├── type.proto
│   │       │               └── wrappers.proto
│   │       └── test/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── db/
│   │           │           └── plexus/
│   │           │               └── interop/
│   │           │                   └── dsl/
│   │           │                       └── protobuf/
│   │           │                           └── tests/
│   │           │                               ├── ProtoLangImportResolverTest.xtend
│   │           │                               └── ProtoLangParsingTest.xtend
│   │           └── resources/
│   │               └── com/
│   │                   └── db/
│   │                       └── plexus/
│   │                           └── interop/
│   │                               └── dsl/
│   │                                   └── protobuf/
│   │                                       └── tests/
│   │                                           ├── enum_values_naming.proto
│   │                                           ├── example1.proto
│   │                                           ├── example2.proto
│   │                                           ├── field_label.proto
│   │                                           ├── option_declare.proto
│   │                                           ├── option_usage.proto
│   │                                           ├── scoping/
│   │                                           │   ├── scoping/
│   │                                           │   │   └── test3.proto
│   │                                           │   ├── test1.proto
│   │                                           │   └── test2.proto
│   │                                           └── subfolder/
│   │                                               └── example3.proto
│   └── proto-lang.ide/
│       ├── build.gradle
│       └── src/
│           └── main/
│               └── java/
│                   └── com/
│                       └── db/
│                           └── plexus/
│                               └── interop/
│                                   └── dsl/
│                                       └── protobuf/
│                                           ├── ide/
│                                           │   ├── ProtoLangIdeModule.xtend
│                                           │   └── ProtoLangIdeSetup.xtend
│                                           └── server/
│                                               ├── ProtoDebugServerLauncher.java
│                                               ├── ProtoLangServerModule.java
│                                               ├── ProtoLanguageServer.java
│                                               └── StdIOServerLauncher.java
├── gradle/
│   ├── maven-deployment.gradle
│   ├── source-layout.gradle
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── greeting-details.md
├── nodejs-broker-roadmap.md
├── protocol/
│   ├── plexus.interop.proto
│   ├── plexus.interop.transport.proto
│   └── plexus.proto
├── samples/
│   ├── broadcast/
│   │   └── registry/
│   │       └── interop/
│   │           └── samples/
│   │               ├── ip_telephony_app.interop
│   │               ├── ip_telephony_broadcast_service.proto
│   │               └── sales_app.interop
│   ├── build.gradle
│   ├── greeting/
│   │   ├── GenBrokerMetadata.cmd
│   │   ├── metadata/
│   │   │   ├── apps.json
│   │   │   └── interop.json
│   │   └── registry/
│   │       └── interop/
│   │           ├── electron_app_launcher.interop
│   │           └── samples/
│   │               ├── greeting_client.interop
│   │               ├── greeting_server.interop
│   │               ├── greeting_service.proto
│   │               └── web_greeting_server.interop
│   └── quick-start/
│       ├── GenBrokerMetadata.cmd
│       ├── metadata/
│       │   ├── apps.json
│       │   └── interop.json
│       └── registry/
│           ├── fx/
│           │   └── ccy_pair_rate_service.proto
│           ├── interop/
│           │   └── electron_app_launcher.interop
│           ├── vendor_a/
│           │   └── fx/
│           │       ├── ccy_pair_rate_provider.interop
│           │       └── web_ccy_pair_rate_provider.interop
│           └── vendor_b/
│               └── fx/
│                   ├── ccy_pair_rate_viewer.interop
│                   └── web_ccy_pair_rate_viewer.interop
├── settings.gradle
└── web/
    ├── .ci-npmrc-tpl
    ├── .ci-publish-npmrc-tpl
    ├── .gitignore
    ├── .yarnrc
    ├── README.md
    ├── build.gradle
    ├── configs/
    │   └── tslint.json
    ├── lerna.json
    ├── package.json
    ├── packages/
    │   ├── broker/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── preprocessor.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── AsyncHandler.ts
    │   │   │   ├── api/
    │   │   │   │   ├── AppLifeCycleConfig.ts
    │   │   │   │   ├── CrossDomainEventBusProvider.ts
    │   │   │   │   ├── CrossDomainHostBuilder.ts
    │   │   │   │   ├── CrossDomainHostEntryPoint.ts
    │   │   │   │   ├── WebBrokerConnectionBuilder.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── broker/
    │   │   │   │   ├── AuthenticationHandler.ts
    │   │   │   │   ├── Broker.ts
    │   │   │   │   ├── ClientConnectionProcessor.ts
    │   │   │   │   ├── ClientRequestProcessor.ts
    │   │   │   │   ├── DiscoveryRequestHandler.ts
    │   │   │   │   ├── InvocationRequestHandler.ts
    │   │   │   │   └── TasksTracker.ts
    │   │   │   ├── bus/
    │   │   │   │   ├── Event.ts
    │   │   │   │   ├── EventBus.ts
    │   │   │   │   ├── FallbackEventBus.ts
    │   │   │   │   ├── cross/
    │   │   │   │   │   ├── CrossDomainBusConfig.ts
    │   │   │   │   │   ├── CrossDomainEventBus.ts
    │   │   │   │   │   ├── host/
    │   │   │   │   │   │   ├── CrossDomainHost.ts
    │   │   │   │   │   │   ├── CrossDomainHostConfig.ts
    │   │   │   │   │   │   ├── HostMessageEvent.ts
    │   │   │   │   │   │   └── HostState.ts
    │   │   │   │   │   ├── index.ts
    │   │   │   │   │   └── model/
    │   │   │   │   │       ├── IFrameHostMessage.ts
    │   │   │   │   │       ├── MessageType.ts
    │   │   │   │   │       ├── PublishRequest.ts
    │   │   │   │   │       ├── ResponseType.ts
    │   │   │   │   │       └── SubscribeRequest.ts
    │   │   │   │   ├── index.ts
    │   │   │   │   └── same/
    │   │   │   │       ├── BroadCastChannelEventBus.ts
    │   │   │   │       └── JStorageEventBus.ts
    │   │   │   ├── index.ts
    │   │   │   ├── launcher/
    │   │   │   │   ├── AppLaunchRequest.ts
    │   │   │   │   ├── AppLaunchResponse.ts
    │   │   │   │   ├── AppLauncher.ts
    │   │   │   │   ├── AppLauncherRegistry.ts
    │   │   │   │   ├── LaunchInvocationContext.ts
    │   │   │   │   ├── UrlWebAppLauncher.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── lifecycle/
    │   │   │   │   ├── AppLifeCycleManager.ts
    │   │   │   │   ├── ApplicationConnection.ts
    │   │   │   │   ├── ApplicationConnectionDescriptor.ts
    │   │   │   │   └── ApplicationDescriptor.ts
    │   │   │   ├── peers/
    │   │   │   │   ├── ActionType.ts
    │   │   │   │   ├── PeerAppLifeCycleManager.ts
    │   │   │   │   ├── PeerConnectionsService.ts
    │   │   │   │   ├── PeerProxyConnection.ts
    │   │   │   │   ├── PeerProxyTransportChannel.ts
    │   │   │   │   ├── PeerServerConnectionFactory.ts
    │   │   │   │   ├── ProxyAuthenticationHandler.ts
    │   │   │   │   ├── StreamingInvocationClient.ts
    │   │   │   │   ├── actions/
    │   │   │   │   │   ├── ChannelRequest.ts
    │   │   │   │   │   ├── CloseChannelRequest.ts
    │   │   │   │   │   ├── CloseChannelResponse.ts
    │   │   │   │   │   ├── CreateChannelResponse.ts
    │   │   │   │   │   ├── RemoteActions.ts
    │   │   │   │   │   └── SendMessageRequest.ts
    │   │   │   │   ├── events/
    │   │   │   │   │   ├── AppConnectionHeartBit.ts
    │   │   │   │   │   └── EventType.ts
    │   │   │   │   ├── host/
    │   │   │   │   │   ├── HostConnectionFactory.ts
    │   │   │   │   │   └── HostTransportConnection.ts
    │   │   │   │   └── remote/
    │   │   │   │       ├── EventBasedRequest.ts
    │   │   │   │       ├── EventBusRemoteBrokerService.ts
    │   │   │   │       ├── RemoteActionResult.ts
    │   │   │   │       ├── RemoteActionStatus.ts
    │   │   │   │       └── RemoteBrokerService.ts
    │   │   │   ├── storage/
    │   │   │   │   └── Storage.ts
    │   │   │   ├── transport/
    │   │   │   │   └── MultiSourcesServerConnectionFactory.ts
    │   │   │   └── util/
    │   │   │       └── Types.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── ccy-pair-rate-provider/
    │   │   ├── gen-client.cmd
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── RateService.ts
    │   │   │   ├── gen/
    │   │   │   │   ├── WebCcyPairRateProviderGeneratedClient.ts
    │   │   │   │   ├── plexus-messages.d.ts
    │   │   │   │   └── plexus-messages.js
    │   │   │   ├── index.ts
    │   │   │   └── views/
    │   │   │       └── index.html
    │   │   └── tsconfig.json
    │   ├── ccy-pair-rate-viewer/
    │   │   ├── gen-client.cmd
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── gen/
    │   │   │   │   ├── WebCcyPairRateViewerGeneratedClient.ts
    │   │   │   │   ├── plexus-messages.d.ts
    │   │   │   │   └── plexus-messages.js
    │   │   │   ├── index.ts
    │   │   │   └── views/
    │   │   │       └── index.html
    │   │   └── tsconfig.json
    │   ├── cli/
    │   │   ├── .gitignore
    │   │   ├── .npmignore
    │   │   ├── .vscode/
    │   │   │   ├── launch.json
    │   │   │   └── tasks.json
    │   │   ├── dev-examples.md
    │   │   ├── install.js
    │   │   ├── package.json
    │   │   ├── plexus.js
    │   │   ├── src/
    │   │   │   ├── commands/
    │   │   │   │   ├── BaseCommand.ts
    │   │   │   │   ├── BaseJavaGenCommand.ts
    │   │   │   │   ├── Command.ts
    │   │   │   │   ├── DefaultOptions.ts
    │   │   │   │   ├── GenCSharpCommand.ts
    │   │   │   │   ├── GenJsonCommand.ts
    │   │   │   │   ├── GenProtoCommand.ts
    │   │   │   │   ├── GenTsCommand.ts
    │   │   │   │   ├── ListMetaFilesCommand.ts
    │   │   │   │   ├── Option.ts
    │   │   │   │   ├── ValidateMetadataCommand.ts
    │   │   │   │   ├── ValidateMetadataPatchCommand.ts
    │   │   │   │   ├── commands.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── common/
    │   │   │   │   ├── download.ts
    │   │   │   │   ├── files.ts
    │   │   │   │   ├── java.ts
    │   │   │   │   ├── process.ts
    │   │   │   │   ├── progress.ts
    │   │   │   │   ├── protoJs.ts
    │   │   │   │   └── protoc.ts
    │   │   │   ├── index.ts
    │   │   │   ├── install.ts
    │   │   │   └── typings.d.ts
    │   │   ├── tests/
    │   │   │   ├── approved/
    │   │   │   │   ├── generated-cs-client.approved.txt
    │   │   │   │   ├── generated-cs-messages.approved.txt
    │   │   │   │   ├── generated-cs-options.approved.txt
    │   │   │   │   ├── generated-cs-service.approved.txt
    │   │   │   │   ├── generated-json.approved.txt
    │   │   │   │   ├── generated-ts-client.approved.txt
    │   │   │   │   ├── generated-ts-definitions.approved.txt
    │   │   │   │   └── generated-ts-messages.approved.txt
    │   │   │   ├── commands/
    │   │   │   │   ├── BaseCommand.spec.ts
    │   │   │   │   ├── GenCSharpCommand.spec.ts
    │   │   │   │   ├── GenJsonCommand.spec.ts
    │   │   │   │   ├── GetTsCommand.spec.ts
    │   │   │   │   ├── ListMetaFilesCommand.spec.ts
    │   │   │   │   ├── ValidateMetadataCommand.spec.ts
    │   │   │   │   ├── ValidateMetatadaPatchCommand.spec.ts
    │   │   │   │   └── setup.ts
    │   │   │   ├── files.spec.ts
    │   │   │   └── protoJs.spec.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── client/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── client/
    │   │   │   │   ├── ClientDtoUtils.ts
    │   │   │   │   ├── api/
    │   │   │   │   │   ├── AnonymousSubscription.ts
    │   │   │   │   │   ├── BaseInvocationClientImpl.ts
    │   │   │   │   │   ├── DelegateInvocationObserver.ts
    │   │   │   │   │   ├── InvocationClient.ts
    │   │   │   │   │   ├── LoggingInvocationObserver.ts
    │   │   │   │   │   ├── ValueHandler.ts
    │   │   │   │   │   ├── container/
    │   │   │   │   │   │   ├── ConnectionDetails.ts
    │   │   │   │   │   │   ├── ConnectionDetailsService.ts
    │   │   │   │   │   │   ├── ContainerAwareClientAPIBuilder.ts
    │   │   │   │   │   │   ├── DefaultConnectionDetailsService.ts
    │   │   │   │   │   │   ├── WsConnectionDetails.ts
    │   │   │   │   │   │   └── index.ts
    │   │   │   │   │   ├── generic/
    │   │   │   │   │   │   ├── ClientApiBuilder.ts
    │   │   │   │   │   │   ├── GenericClientApi.ts
    │   │   │   │   │   │   ├── GenericClientApiBase.ts
    │   │   │   │   │   │   ├── GenericClientApiBuilder.ts
    │   │   │   │   │   │   ├── GenericClientApiImpl.ts
    │   │   │   │   │   │   ├── GenericInvocationsHost.ts
    │   │   │   │   │   │   ├── InvocationExecutor.ts
    │   │   │   │   │   │   ├── handlers/
    │   │   │   │   │   │   │   ├── InvocationHandlerConverter.ts
    │   │   │   │   │   │   │   ├── InvocationHandlersRegistry.ts
    │   │   │   │   │   │   │   ├── index.ts
    │   │   │   │   │   │   │   ├── streaming/
    │   │   │   │   │   │   │   │   ├── BidiStreamingInvocationHandler.ts
    │   │   │   │   │   │   │   │   ├── ServerStreamingInvocationHandler.ts
    │   │   │   │   │   │   │   │   ├── StreamingInvocationClient.ts
    │   │   │   │   │   │   │   │   ├── StreamingInvocationClientImpl.ts
    │   │   │   │   │   │   │   │   ├── StreamingInvocationClientInternal.ts
    │   │   │   │   │   │   │   │   ├── StreamingInvocationHost.ts
    │   │   │   │   │   │   │   │   ├── converters.ts
    │   │   │   │   │   │   │   │   └── index.ts
    │   │   │   │   │   │   │   └── unary/
    │   │   │   │   │   │   │       ├── UnaryInvocationHandler.ts
    │   │   │   │   │   │   │       ├── converters.ts
    │   │   │   │   │   │   │       └── index.ts
    │   │   │   │   │   │   ├── index.ts
    │   │   │   │   │   │   └── internal/
    │   │   │   │   │   │       ├── InternalActionInvoker.ts
    │   │   │   │   │   │       ├── InternalGenericClientApi.ts
    │   │   │   │   │   │       └── index.ts
    │   │   │   │   │   └── index.ts
    │   │   │   │   ├── generic/
    │   │   │   │   │   ├── AcceptedInvocation.ts
    │   │   │   │   │   ├── BaseInvocation.ts
    │   │   │   │   │   ├── GenericClient.ts
    │   │   │   │   │   ├── GenericClientFactory.ts
    │   │   │   │   │   ├── GenericClientImpl.ts
    │   │   │   │   │   ├── GenericInvocation.ts
    │   │   │   │   │   ├── Invocation.ts
    │   │   │   │   │   ├── InvocationChannelObserver.ts
    │   │   │   │   │   ├── InvocationObserver.ts
    │   │   │   │   │   ├── InvocationObserverConverter.ts
    │   │   │   │   │   ├── InvocationState.ts
    │   │   │   │   │   ├── RequestedDiscoveredInvocation.ts
    │   │   │   │   │   ├── RequestedInvocation.ts
    │   │   │   │   │   ├── SingleMessageRequst.ts
    │   │   │   │   │   └── index.ts
    │   │   │   │   └── index.ts
    │   │   │   └── index.ts
    │   │   ├── tests/
    │   │   │   ├── BufferedInvocationObserver.ts
    │   │   │   ├── LogInvocationObserver.ts
    │   │   │   ├── client/
    │   │   │   │   ├── DefaultConnectionDetailsService.spec.ts
    │   │   │   │   ├── GenericClient.spec.ts
    │   │   │   │   ├── GenericClientApi.spec.ts
    │   │   │   │   ├── GenericInvocationHost.spec.ts
    │   │   │   │   ├── Invocation.spec.ts
    │   │   │   │   ├── WsConnectionDetails.spec.ts
    │   │   │   │   └── client-mocks.ts
    │   │   │   └── utils.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── client-api/
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── MethodInvocationContext.ts
    │   │   │   ├── dto/
    │   │   │   │   ├── ActionReference.ts
    │   │   │   │   ├── BasicInvocationInfo.ts
    │   │   │   │   ├── ClientConnectRequest.ts
    │   │   │   │   ├── Completion.ts
    │   │   │   │   ├── ConsumedService.ts
    │   │   │   │   ├── DiscoveredMethod.ts
    │   │   │   │   ├── DiscoveredService.ts
    │   │   │   │   ├── DiscoveredServiceMethod.ts
    │   │   │   │   ├── DiscoveryMode.ts
    │   │   │   │   ├── GenericRequest.ts
    │   │   │   │   ├── HostInvocationInfo.ts
    │   │   │   │   ├── MethodDiscoveryRequest.ts
    │   │   │   │   ├── MethodDiscoveryResponse.ts
    │   │   │   │   ├── MethodType.ts
    │   │   │   │   ├── Option.ts
    │   │   │   │   ├── ProvidedMethodReference.ts
    │   │   │   │   ├── ProvidedServiceReference.ts
    │   │   │   │   ├── RemoteInvocationInfo.ts
    │   │   │   │   ├── ServiceDiscoveryRequest.ts
    │   │   │   │   ├── ServiceDiscoveryResponse.ts
    │   │   │   │   ├── ServiceInfo.ts
    │   │   │   │   └── index.ts
    │   │   │   └── index.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── common/
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── PlexusFeatures.ts
    │   │   │   ├── RetryConfig.ts
    │   │   │   ├── cache/
    │   │   │   │   ├── Cache.ts
    │   │   │   │   ├── CacheEntry.ts
    │   │   │   │   ├── CacheEntryDescriptor.ts
    │   │   │   │   ├── InMemoryCache.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   ├── logger/
    │   │   │   │   ├── DelegatingLogger.ts
    │   │   │   │   ├── Logger.ts
    │   │   │   │   ├── LoggerBase.ts
    │   │   │   │   ├── LoggerFactory.ts
    │   │   │   │   ├── PrefixedLogger.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── rx/
    │   │   │   │   ├── AnonymousSubscription.ts
    │   │   │   │   ├── BufferedObserver.ts
    │   │   │   │   ├── ConversionObserver.ts
    │   │   │   │   ├── Observer.ts
    │   │   │   │   ├── Subscription.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── util/
    │   │   │   │   ├── Arrays.ts
    │   │   │   │   ├── ExtendedArray.ts
    │   │   │   │   ├── GUID.ts
    │   │   │   │   ├── async/
    │   │   │   │   │   ├── AsyncHelper.ts
    │   │   │   │   │   ├── CancellationToken.ts
    │   │   │   │   │   ├── ReadOnlyCancellationToken.ts
    │   │   │   │   │   ├── ReadWriteCancellationToken.ts
    │   │   │   │   │   ├── SequencedExecutor.ts
    │   │   │   │   │   ├── index.ts
    │   │   │   │   │   └── promises.ts
    │   │   │   │   ├── collections/
    │   │   │   │   │   ├── BlockingQueue.ts
    │   │   │   │   │   ├── ExtendedMap.ts
    │   │   │   │   │   ├── LimitedBufferQueue.ts
    │   │   │   │   │   ├── index.ts
    │   │   │   │   │   └── map.ts
    │   │   │   │   ├── dom/
    │   │   │   │   │   └── DomUtils.ts
    │   │   │   │   ├── index.ts
    │   │   │   │   ├── js/
    │   │   │   │   │   └── ObjectUtils.ts
    │   │   │   │   ├── once.ts
    │   │   │   │   ├── state/
    │   │   │   │   │   ├── StateMaschine.ts
    │   │   │   │   │   ├── StateMaschineBase.ts
    │   │   │   │   │   └── index.ts
    │   │   │   │   ├── time/
    │   │   │   │   │   └── TimeUtils.ts
    │   │   │   │   ├── types.ts
    │   │   │   │   ├── unique.ts
    │   │   │   │   └── url/
    │   │   │   │       └── UrlParamsProvider.ts
    │   │   │   └── ws/
    │   │   │       └── detect.ts
    │   │   ├── tests/
    │   │   │   ├── cache/
    │   │   │   │   └── InMemoryCache.spec.ts
    │   │   │   ├── logger/
    │   │   │   │   └── LoggerFactory.spec.ts
    │   │   │   └── util/
    │   │   │       ├── Arrays.spec.ts
    │   │   │       ├── AsyncHelper.spec.ts
    │   │   │       ├── BlockingQueue.spec.ts
    │   │   │       ├── ExtendedArray.spec.ts
    │   │   │       ├── LimitedBufferQueue.spec.ts
    │   │   │       ├── SequencedExecutor.spec.ts
    │   │   │       ├── StateMaschineBase.spec.ts
    │   │   │       ├── map.spec.ts
    │   │   │       └── promises.spec.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── common-api-impl/
    │   │   ├── .npmignore
    │   │   ├── README.md
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── PartialPeerDescriptor.ts
    │   │   │   ├── PlexusInteropPeer.ts
    │   │   │   ├── PlexusInteropPlatform.ts
    │   │   │   ├── actions/
    │   │   │   │   ├── DiscoverMethodHandler.ts
    │   │   │   │   ├── DiscoverMethodsHandler.ts
    │   │   │   │   ├── InvokeHandler.ts
    │   │   │   │   └── SubscribeHandler.ts
    │   │   │   ├── api/
    │   │   │   │   ├── InteropPlatformFactory.ts
    │   │   │   │   ├── client-api.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   ├── listeners.ts
    │   │   │   ├── metadata.ts
    │   │   │   ├── registration.ts
    │   │   │   └── types.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── e2e/
    │   │   ├── gen-metadata.cmd
    │   │   ├── karma.conf.js
    │   │   ├── metadata/
    │   │   │   ├── apps.json
    │   │   │   ├── interop/
    │   │   │   │   └── plexus/
    │   │   │   │       └── interop/
    │   │   │   │           └── testing/
    │   │   │   │               ├── echo_client.interop
    │   │   │   │               ├── echo_server.interop
    │   │   │   │               ├── echo_service.proto
    │   │   │   │               └── test_app_launcher.interop
    │   │   │   └── interop.json
    │   │   ├── package.json
    │   │   ├── scripts/
    │   │   │   ├── browserify-all.js
    │   │   │   ├── coverage.js
    │   │   │   ├── file-utils.js
    │   │   │   ├── karma-preprocessor.js
    │   │   │   ├── native-broker-launcher.js
    │   │   │   ├── native-e2e-tests-launcher.js
    │   │   │   └── web-e2e-tests-launcher.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── echo/
    │   │   │   │   ├── client/
    │   │   │   │   │   ├── EchoClientGeneratedClient.ts
    │   │   │   │   │   ├── plexus-messages.d.ts
    │   │   │   │   │   └── plexus-messages.js
    │   │   │   │   └── server/
    │   │   │   │       ├── EchoServerGeneratedClient.ts
    │   │   │   │       ├── plexus-messages.d.ts
    │   │   │   │       └── plexus-messages.js
    │   │   │   ├── polyfills.ts
    │   │   │   └── views/
    │   │   │       └── proxyHost.html
    │   │   ├── tests/
    │   │   │   ├── common/
    │   │   │   │   ├── BenchmarkResult.ts
    │   │   │   │   ├── ClientsSetup.ts
    │   │   │   │   ├── ConnectionProvider.ts
    │   │   │   │   ├── ConnectionSetup.ts
    │   │   │   │   ├── RawMetadata.ts
    │   │   │   │   ├── TestCrossDomainHost.ts
    │   │   │   │   ├── TransportsSetup.ts
    │   │   │   │   └── utils.ts
    │   │   │   ├── echo/
    │   │   │   │   ├── BaseEchoTest.ts
    │   │   │   │   ├── BidiStreamingTests.ts
    │   │   │   │   ├── ClientConnectivityTests.ts
    │   │   │   │   ├── ClientStreamingHandler.ts
    │   │   │   │   ├── ClientStreamingTests.ts
    │   │   │   │   ├── DiscoveryTests.ts
    │   │   │   │   ├── DynamicInvocationTests.ts
    │   │   │   │   ├── EchoClientBenchmark.ts
    │   │   │   │   ├── NopServiceHandler.ts
    │   │   │   │   ├── PointToPointInvocationTests.ts
    │   │   │   │   ├── ServerStreamingHandler.ts
    │   │   │   │   ├── ServerStreamingInvocationTests.ts
    │   │   │   │   └── UnaryServiceHandler.ts
    │   │   │   ├── native/
    │   │   │   │   ├── WebSocketClientConnectivity.spec.ts
    │   │   │   │   ├── WebSocketCommonApi.spec.ts
    │   │   │   │   ├── WebSocketDiscovery.spec.ts
    │   │   │   │   ├── WebSocketDynamicInvocationTests.spec.ts
    │   │   │   │   ├── WebSocketMetadataLoader.spec.ts
    │   │   │   │   ├── WebSocketPlainDtoTests.spec.ts
    │   │   │   │   ├── WebSocketPointToPoint.spec.ts
    │   │   │   │   ├── WebSocketStreaming.spec.ts
    │   │   │   │   └── benchmarks/
    │   │   │   │       └── WebSocketTransportBenchmark.spec.ts
    │   │   │   └── web/
    │   │   │       ├── WebBrokerClientConnectivity.spec.ts
    │   │   │       ├── WebBrokerDiscovery.spec.ts
    │   │   │       ├── WebBrokerPointToPoint.spec.ts
    │   │   │       ├── WebBrokerStreaming.spec.ts
    │   │   │       └── benchmarks/
    │   │   │           └── WebBrokerTransportBenchmark.spec.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── electron-launcher/
    │   │   ├── ElectronAppLauncher.cmd
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── index.ts
    │   │   │   └── launcher/
    │   │   │       ├── ElectronAppLauncher.ts
    │   │   │       ├── Main.ts
    │   │   │       ├── client/
    │   │   │       │   └── ElectronAppLauncherGeneratedClient.ts
    │   │   │       ├── gen/
    │   │   │       │   ├── plexus-messages.d.ts
    │   │   │       │   └── plexus-messages.js
    │   │   │       └── logger/
    │   │   │           └── FileLogger.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── io/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── preprocessor.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── api/
    │   │   │   │   ├── BinaryMarshaller.ts
    │   │   │   │   ├── BinaryMarshallerProvider.ts
    │   │   │   │   ├── ExtendedMarshaller.ts
    │   │   │   │   ├── Marshaller.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── dynamic/
    │   │   │   │   ├── DynamicBinaryMarshallerProvider.ts
    │   │   │   │   ├── DynamicBinaryProtoMarshaller.ts
    │   │   │   │   ├── DynamicProtoMarshaller.ts
    │   │   │   │   ├── DynamicProtoMarshallerFactory.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   └── static/
    │   │   │       ├── ProtoMarshallerProvider.ts
    │   │   │       └── index.ts
    │   │   ├── tests/
    │   │   │   ├── dynamic/
    │   │   │   │   └── DynamicMarshallerFactory.spec.ts
    │   │   │   └── static/
    │   │   │       └── ProtoMarshallerProvider.spec.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── metadata/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── preprocessor.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── apps/
    │   │   │   │   ├── AppRegistryProvider.ts
    │   │   │   │   ├── AppRegistryService.ts
    │   │   │   │   ├── json/
    │   │   │   │   │   ├── JsonAppRegistryProvider.ts
    │   │   │   │   │   └── UrlAppRegistryProvider.ts
    │   │   │   │   └── model/
    │   │   │   │       ├── AppRegistry.ts
    │   │   │   │       ├── Application.ts
    │   │   │   │       └── index.ts
    │   │   │   ├── index.ts
    │   │   │   └── interop/
    │   │   │       ├── InteropRegistryProvider.ts
    │   │   │       ├── InteropRegistryService.ts
    │   │   │       ├── apps/
    │   │   │       │   └── Application.ts
    │   │   │       ├── json/
    │   │   │       │   ├── ApplicationDto.ts
    │   │   │       │   ├── ConsumedMethodDto.ts
    │   │   │       │   ├── ConsumedServiceDto.ts
    │   │   │       │   ├── EnumDto.ts
    │   │   │       │   ├── Field.ts
    │   │   │       │   ├── Fields.ts
    │   │   │       │   ├── JsonInteropRegistryProvider.ts
    │   │   │       │   ├── MessageDto.ts
    │   │   │       │   ├── MessagesNamespace.ts
    │   │   │       │   ├── MethodDto.ts
    │   │   │       │   ├── MethodTypeDto.ts
    │   │   │       │   ├── OptionDto.ts
    │   │   │       │   ├── Options.ts
    │   │   │       │   ├── ProvidedMethodDto.ts
    │   │   │       │   ├── ProvidedServiceDto.ts
    │   │   │       │   ├── RegistryDto.ts
    │   │   │       │   ├── ServiceDto.ts
    │   │   │       │   ├── UrlInteropRegistryProvider.ts
    │   │   │       │   └── Values.ts
    │   │   │       └── model/
    │   │   │           ├── Application.ts
    │   │   │           ├── ConsumedMethod.ts
    │   │   │           ├── ConsumedMethodReference.ts
    │   │   │           ├── ConsumedService.ts
    │   │   │           ├── ConsumedServiceReference.ts
    │   │   │           ├── Enum.ts
    │   │   │           ├── Field.ts
    │   │   │           ├── InteropRegistry.ts
    │   │   │           ├── MatchPattern.ts
    │   │   │           ├── MatchPatternFactory.ts
    │   │   │           ├── Message.ts
    │   │   │           ├── Method.ts
    │   │   │           ├── MethodType.ts
    │   │   │           ├── Option.ts
    │   │   │           ├── ProvidedMethod.ts
    │   │   │           ├── ProvidedMethodReference.ts
    │   │   │           ├── ProvidedService.ts
    │   │   │           ├── ProvidedServiceReference.ts
    │   │   │           ├── Service.ts
    │   │   │           └── index.ts
    │   │   ├── tests/
    │   │   │   └── json/
    │   │   │       ├── InteropRegistryService.spec.ts
    │   │   │       ├── JsonAppRegistryProvider.spec.ts
    │   │   │       ├── JsonRegistryProvider.spec.ts
    │   │   │       ├── test-apps.json
    │   │   │       └── test-interop.json
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── protocol/
    │   │   ├── gen-protocol.cmd
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── dto/
    │   │   │   │   ├── CancelledCompletion.ts
    │   │   │   │   ├── ClientError.ts
    │   │   │   │   ├── ClientProtocolUtils.ts
    │   │   │   │   ├── Completion.ts
    │   │   │   │   ├── ErrorCompletion.ts
    │   │   │   │   ├── InvocationMetaInfo.ts
    │   │   │   │   ├── SuccessCompletion.ts
    │   │   │   │   ├── UniqueId.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── gen/
    │   │   │   │   └── .gitignore
    │   │   │   ├── index.ts
    │   │   │   └── util/
    │   │   │       └── ClientProtocolHelper.ts
    │   │   ├── tests/
    │   │   │   └── dto/
    │   │   │       └── UniqueId.spec.ts
    │   │   └── tsconfig.json
    │   ├── remote/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── preprocessor.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── http/
    │   │   │   │   ├── HttpDataLoader.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   └── ws/
    │   │   │       ├── WebSocketDataProvider.ts
    │   │   │       └── index.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── studio/
    │   │   ├── .angular-cli.json
    │   │   ├── .bootstraprc
    │   │   ├── .editorconfig
    │   │   ├── .gitignore
    │   │   ├── .vscode/
    │   │   │   └── launch.json
    │   │   ├── README.md
    │   │   ├── karma.conf.js
    │   │   ├── package.json
    │   │   ├── protractor.conf.js
    │   │   ├── src/
    │   │   │   ├── app/
    │   │   │   │   ├── app-list/
    │   │   │   │   │   ├── app-list.component.css
    │   │   │   │   │   ├── app-list.component.html
    │   │   │   │   │   └── app-list.component.ts
    │   │   │   │   ├── app-services/
    │   │   │   │   │   ├── app-services.component.css
    │   │   │   │   │   ├── app-services.component.html
    │   │   │   │   │   └── app-services.component.ts
    │   │   │   │   ├── app.component.css
    │   │   │   │   ├── app.component.html
    │   │   │   │   ├── app.component.ts
    │   │   │   │   ├── app.module.ts
    │   │   │   │   ├── app.routing.ts
    │   │   │   │   ├── consumed-service/
    │   │   │   │   │   ├── consumed-service.component.css
    │   │   │   │   │   ├── consumed-service.component.html
    │   │   │   │   │   └── consumed-service.component.ts
    │   │   │   │   ├── header/
    │   │   │   │   │   ├── header.component.css
    │   │   │   │   │   ├── header.component.html
    │   │   │   │   │   └── header.component.ts
    │   │   │   │   ├── metadata-loader/
    │   │   │   │   │   ├── metadata-loader.component.css
    │   │   │   │   │   ├── metadata-loader.component.html
    │   │   │   │   │   └── metadata-loader.component.ts
    │   │   │   │   ├── provided-service/
    │   │   │   │   │   ├── provided-service.component.css
    │   │   │   │   │   ├── provided-service.component.html
    │   │   │   │   │   └── provided-service.component.ts
    │   │   │   │   └── services/
    │   │   │   │       ├── AppUtils.ts
    │   │   │   │       ├── core/
    │   │   │   │       │   ├── DefaultMessageGenerator.spec.ts
    │   │   │   │       │   ├── DefaultMessageGenerator.ts
    │   │   │   │       │   ├── FieldNamesValidator.spec.ts
    │   │   │   │       │   ├── FieldNamesValidator.ts
    │   │   │   │       │   ├── GenericClientWrapper.ts
    │   │   │   │       │   ├── InteropClient.ts
    │   │   │   │       │   ├── InteropClientFactory.ts
    │   │   │   │       │   ├── InteropServiceFactory.ts
    │   │   │   │       │   ├── StringHandlers.ts
    │   │   │   │       │   ├── TransportConnectionFactory.ts
    │   │   │   │       │   ├── TransportConnectionProvider.ts
    │   │   │   │       │   └── invocation-utils.ts
    │   │   │   │       ├── effects/
    │   │   │   │       │   └── ConnectionEffects.ts
    │   │   │   │       ├── extensions/
    │   │   │   │       │   └── StudioExtensions.ts
    │   │   │   │       ├── reducers/
    │   │   │   │       │   ├── AlertsHandler.ts
    │   │   │   │       │   ├── ConnectionDetailsReducer.ts
    │   │   │   │       │   ├── PlexusReducers.ts
    │   │   │   │       │   └── TypedAction.ts
    │   │   │   │       ├── transport/
    │   │   │   │       │   ├── TransportConnectionFactory.ts
    │   │   │   │       │   └── TransportConnectionProvider.ts
    │   │   │   │       └── ui/
    │   │   │   │           ├── AppActions.ts
    │   │   │   │           ├── AppEffects.ts
    │   │   │   │           ├── AppModel.ts
    │   │   │   │           ├── ConnectionRequestParams.ts
    │   │   │   │           ├── RootReducers.ts
    │   │   │   │           ├── SubscriptionsRegistry.ts
    │   │   │   │           ├── filters.ts
    │   │   │   │           └── validators.ts
    │   │   │   ├── environments/
    │   │   │   │   ├── environment.prod.ts
    │   │   │   │   └── environment.ts
    │   │   │   ├── index.html
    │   │   │   ├── main.ts
    │   │   │   ├── polyfills.ts
    │   │   │   ├── setup-jest.ts
    │   │   │   ├── styles.css
    │   │   │   ├── test.ts
    │   │   │   ├── tsconfig.app.json
    │   │   │   ├── tsconfig.spec.json
    │   │   │   └── typings.d.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── transport-common/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── common/
    │   │   │   │   ├── BaseChannel.ts
    │   │   │   │   ├── BufferedObserver.ts
    │   │   │   │   ├── Channel.ts
    │   │   │   │   ├── ChannelObserver.ts
    │   │   │   │   ├── Defaults.ts
    │   │   │   │   ├── DelegateChannelObserver.ts
    │   │   │   │   ├── PlexusObserver.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   └── transport/
    │   │   │       ├── ClientConnectionFactory.ts
    │   │   │       ├── ConnectionDetails.ts
    │   │   │       ├── DuplexConnectionFactory.ts
    │   │   │       ├── InMemoryConnectionFactory.ts
    │   │   │       ├── InMemoryFramedTransport.ts
    │   │   │       ├── ServerConnectionFactory.ts
    │   │   │       ├── TransportChannel.ts
    │   │   │       ├── TransportConnection.ts
    │   │   │       ├── frame/
    │   │   │       │   ├── BufferedReadFramedTransport.ts
    │   │   │       │   ├── BufferedTransportProxy.ts
    │   │   │       │   ├── ConnectableFramedTransport.ts
    │   │   │       │   ├── FrameHeader.ts
    │   │   │       │   ├── FramedTransport.ts
    │   │   │       │   ├── FramedTransportChannel.ts
    │   │   │       │   ├── FramedTransportConnection.ts
    │   │   │       │   ├── SafeMessageBuffer.ts
    │   │   │       │   ├── TransportFrameHandler.ts
    │   │   │       │   ├── TransportFrameListener.ts
    │   │   │       │   ├── index.ts
    │   │   │       │   └── model/
    │   │   │       │       ├── ChannelCloseFrame.ts
    │   │   │       │       ├── ChannelOpenFrame.ts
    │   │   │       │       ├── ConnectionCloseFrame.ts
    │   │   │       │       ├── ConnectionOpenFrame.ts
    │   │   │       │       ├── DataFrame.ts
    │   │   │       │       ├── Frame.ts
    │   │   │       │       ├── InternalMessagesConverter.ts
    │   │   │       │       ├── MessageFrame.ts
    │   │   │       │       ├── ServiceFrame.ts
    │   │   │       │       ├── index.ts
    │   │   │       │       └── util.ts
    │   │   │       └── index.ts
    │   │   ├── tests/
    │   │   │   ├── BufferedObserver.ts
    │   │   │   ├── LogObserver.ts
    │   │   │   ├── transport/
    │   │   │   │   ├── TestBufferedInMemoryFramedTransport.ts
    │   │   │   │   ├── TestInMemoryConnectionFactory.ts
    │   │   │   │   ├── UniqueId.spec.ts
    │   │   │   │   ├── frame/
    │   │   │   │   │   ├── ClientToServer.spec.ts
    │   │   │   │   │   ├── FramedTransportChannel.spec.ts
    │   │   │   │   │   ├── FramedTransportConnection.spec.ts
    │   │   │   │   │   ├── InternalMessagesConverter.spec.ts
    │   │   │   │   │   ├── SafeMessageBuffer.spec.ts
    │   │   │   │   │   └── util.ts
    │   │   │   │   ├── mocks/
    │   │   │   │   │   └── BufferedChannel.ts
    │   │   │   │   └── transport-mocks.ts
    │   │   │   └── utils.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── web-example/
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── common/
    │   │   │   │   └── DomLogger.ts
    │   │   │   └── greeting/
    │   │   │       ├── server/
    │   │   │       │   ├── Main.ts
    │   │   │       │   ├── WebGreetingServerGeneratedClient.ts
    │   │   │       │   └── gen/
    │   │   │       │       ├── plexus-messages.d.ts
    │   │   │       │       └── plexus-messages.js
    │   │   │       └── views/
    │   │   │           └── greetingServer.html
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   └── websocket-transport/
    │       ├── .npmignore
    │       ├── package.json
    │       ├── setup-jasmine.js
    │       ├── src/
    │       │   ├── index.ts
    │       │   └── transport/
    │       │       ├── WebSocketConnectionFactory.ts
    │       │       ├── WebSocketFramedTransport.ts
    │       │       └── index.ts
    │       ├── tests/
    │       │   └── transports/
    │       │       └── WebSocketFramedTransport.spec.ts
    │       ├── tsconfig.json
    │       └── tslint.json
    └── scripts/
        ├── replace-auth-vars.js
        └── replace-lock-registry.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to Plexus Interop
Thanks for your interest in the project! Here is some basic information about how to contribute.
 
# Contributor License Agreement (CLA)
A CLA is a document that specifies how a project is allowed to use your
contribution; they are commonly used in many open source projects.

All contributions to [Fintech Open Source Foundation](https://www.finos.org/) projects must be made under a [Contributor License Agreement](https://finosfoundation.atlassian.net/wiki/spaces/FINOS/pages/75530375/Legal+Requirements) that must also be met.

_NOTE:_ Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA. 

Pull requests (PRs) submitted to the project cannot be accepted until you have a CLA in place with the Foundation.

*Need an ICLA? Unsure if you are covered under an existing CCLA? Email [help@finos.org](mailto:help@finos.org)*
 
# Contributing Issues

## Prerequisites

* [ ] Have you [searched for duplicates](https://github.com/finos-plexus/plexus-interop/issues?utf8=%E2%9C%93&q=)?  A simple search for exception error messages or a summary of the unexpected behaviour should suffice.
* [ ] Are you running the latest version?
* [ ] Are you sure this is a bug or missing capability?
 
## Raising an Issue
* Please raise issues to the project mailing list <plx@finos.org> ([Web Archive](https://groups.google.com/a/finos.org/forum/#!forum/plx)). Some people from project teams currently can't access build-in github issue tracker from corporate network.
* Please also tag the new issue with either "Bug" or "Enhancement".
 
# Contributing Pull Requests (Code & Docs)
To make review of PRs easier, please:
 
 * For major enhancements before working on any PR, please review the proposal with the project group via mailing list <plx@finos.org> to align it with roadmap.
 * Please make sure your PRs will merge cleanly - PRs that don't are unlikely to be accepted.
 * For code contributions, follow the general structure of the existing code.
 * For documentation contributions, follow the general structure, language, and tone of the existing docs.
 * Keep PRs small and cohesive - if you have multiple contributions, please submit them as independent PRs.
 * Minimize non-functional changes (e.g. whitespace).
 * Ensure all new files include a header comment block containing the [Apache License v2.0 and your copyright information](http://www.apache.org/licenses/LICENSE-2.0#apply).
 * If necessary (e.g. due to 3rd party dependency licensing requirements), update the NOTICE file with any required attribution or other notices
 * If your contribution includes source code for any Category B-licensed dependencies, please get a pre-approval from project leads via mailing list and then add an appropriate notice to this CONTRIBUTING file
 
## Commit and PR Messages

* **Reference issues, wiki pages, and pull requests liberally!**
* Use the present tense ("Add feature" not "Added feature")
* Use the imperative mood ("Move button left..." not "Moves button left...")
* Limit the first line to 72 characters or less

================================================
FILE: .gitignore
================================================
### Gradle ###
build
node_modules
.gradle/

### Maven ###
target/
!.mvn/wrapper/maven-wrapper.jar
.idea
*.iml
**/src-gen/
**/emf-gen
**/xtend-gen
**/xtext-gen
logs

### Eclipse ###
.classpath
.project
.settings/
.metadata/
bin/

### JS ###
.nyc_output
npm-debug.log
lerna-debug.log
npm-debug.log.*
yarn-error.log
coverage
**/dist
**/target/

### VS Code ###
**/*/symbols.json
**/.vscode/settings.json

### Asciidoc ###

**/.asciidoctor/*

### NPM ###

**/*/.npmrc


### IntelliJ
*.iml
*.ipr
*.iws
.idea/
out/
.DS_Store

### Local configuration file (sdk path, etc)
local.properties

================================================
FILE: .whitesource
================================================
{
  "scanSettings": {
    "configMode": "AUTO"
  },
  "checkRunSettings": {
    "vulnerableCheckRunConclusionLevel": "failure"
  },
  "issueSettings": {
    "minSeverityLevel": "LOW"
  }
}

================================================
FILE: FILE_HEADER
================================================
Copyright 2017-2021 Plexus Interop Deutsche Bank AG
SPDX-License-Identifier: Apache-2.0

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2017-2021 Plexus Interop Deutsche Bank AG

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: NOTICE
================================================
Copyright 2017-2019 Plexus Interop Deutsche Bank AG
SPDX-License-Identifier: Apache-2.0

This product includes software developed at the Fintech Open Source Foundation (https://www.finos.org).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

========================================================================
========================================================================
Plexus Interop DevTools information
========================================================================
========================================================================

Plexus Interop DevTools is a part of a project which designed for
developers to simplify their experience with Plexus Interop 
framework. 

Following licenses are used as dependencies which incorporated 
into the DevTools ("dsl" and "samples") and are not components of
the production software.

========================================================================
Common Development and Distribution License 1.0
========================================================================

The following components are provided under the Common Development and Distribution License 1.0. See project link for details.

     (CDDL 1.0) (GPL2 w/ CPE) javax.annotation API (javax.annotation.*)
     (CDDL 1.0) (GPL2 w/ CPE) javax.servlet-api API (javax.servlet.*)
     
========================================================================
Eclipse Public License 1.0
========================================================================

The following components are provided under the Eclipse Public License 1.0. See project link for details.

    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.xbase-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.util-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.xbase.ide-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.lsp4j-0.2.1) - https://github.com/eclipse/lsp4j
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.common.types-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.xbase.lib-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtend.lib-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtend.lib.macro-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.lsp4j.jsonrpc-0.2.1) - https://github.com/eclipse/lsp4j
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.ide-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.web.servlet-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.xbase.web-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.lsp4j.generator-0.2.1) - https://github.com/eclipse/lsp4j
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.ecore-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Xtext (org.eclipse.xtext.web-2.12.0) - https://www.eclipse.org/Xtext/
    (Eclipse Public License 1.0) Junit (junit.junit:4.12) - http://junit.org/junit4
    (Eclipse Public License 1.0) EMF (org.eclipse.emf.ecore.xcore.lib-1.1.100) - https://github.com/eclipse/emf
    (Eclipse Public License 1.0) EMF (org.eclipse.emf.ecore.xmi-2.12.0) - https://github.com/eclipse/emf
    (Eclipse Public License 1.0) EMF (org.eclipse.emf.ecore-2.12.0) - https://github.com/eclipse/emf
    (Eclipse Public License 1.0) EMF (org.eclipse.emf.common-2.12.0) - https://github.com/eclipse/emf
    (Eclipse Public License 1.0) emfjson (emfjson-jackson-0.14.0) - https://github.com/emfjson/emfjson-jackson
    (Eclipse Public License 1.0) Equinox (org.eclipse.equinox.common-3.8.0) - http://www.eclipse.org/equinox/
    (Eclipse Public License 1.0) Eclipse OSGI (org.eclipse.osgi-3.11.2) - http://www.eclipse.org/equinox/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-xml-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-annotations-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-util-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-server-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-webapp-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-security-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-plus-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-jndi-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-http-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-servlet-9.3.8.v20160314) - https://www.eclipse.org/jetty/
    (Eclipse Public License 1.0) Eclipse Jetty (jetty-io-9.3.8.v20160314) - https://www.eclipse.org/jetty/

========================================================================
Protocol Buffers
========================================================================

Protocol Buffers framework is used in accordance to following license:

     Protocol Buffers - Google's data interchange format
     Copyright 2008 Google Inc.  All rights reserved.
     https://developers.google.com/protocol-buffers/

     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions are
     met:

         * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
         * Redistributions in binary form must reproduce the above
     copyright notice, this list of conditions and the following disclaimer
     in the documentation and/or other materials provided with the
     distribution.
         * Neither the name of Google Inc. nor the names of its
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.

     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

================================================
FILE: README.md
================================================
[![FINOS - Archived](https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@master/images/badge-archived.svg)](https://community.finos.org/docs/governance/Software-Projects/stages/archived)

_This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested in restoring development activities on this project, please email help@finos.org_

# Plexus Interop 

## Overview

The **Plexus Interop** project aims to define an open standard for desktop application interoperability and provides
reference implementation of this standard. It formalizes connections between applications within a single user session
on client desktop through a central broker.

The main goal is to enable development of extensible workflows connecting independent apps developed by different
organizations in different technologies (.NET, Web, Java, Python, etc.) by passing relevant context  (structured
data objects) between those apps.

Although the industry is moving towards containerized desktop applications, Plexus Interop recognizes that much
of the application landscape is not yet tied to containers and is architecturally agnostic of container implementation.
Separating interoperability from the container provides notable advantages: different containers can be leveraged in
the same workflow, and launched applications residing outside of containers can participate in interop activities.

Technically speaking, Plexus Interop is a metadata-centric language-agnostic desktop app-to-app interoperability
framework with an extensible model for launching new instances of desktop applications on demand. Its extensibility
is based on open standards which are essential parts of the project.  The architecture is based around central broker
providing hub-and-spoke connectivity between apps and brokering strongly-typed RPC-style calls between them. The broker
has a connection to an Application Lifecycle Manager (or Launcher) which is capable of creating new instances of apps
based on the their runtime-metadata (e.g. container type, launch command, command line parameters) defined in a registry.

![Key components and high level architecture](./docs/src/main/asciidoc/images/architecture.png "Key components and high level architecture")

## Raising an Issue
* Please raise issues to the project mailing list <plx@finos.org> ([Web Archive](https://groups.google.com/a/finos.org/forum/#!forum/plx)). Some people from project teams currently can't access build-in github issue tracker from corporate network.
* Please also tag the new issue with either "Bug" or "Enhancement".
 
## Repository Overview

Plexus Interop repository consist of the following main sections:
* *desktop* - Interop Broker, .NET Interop Client and sample apps implemented in C# using [.NET Core 2.0](https://www.microsoft.com/net/download/core).
* *web* - Web Interop Client and sample apps implemented in [TypeScript](https://www.typescriptlang.org/).
* *dsl* - [Protobuf](https://developers.google.com/protocol-buffers/) and Plexus Interop grammar parsers, validators and code-generators implemented using [Xtext framework](https://eclipse.org/Xtext/).
* *docs* - documentation implemented in [AsciiDoc](http://asciidoc.org/) format using [Asciidoctor](http://asciidoctor.org/) processor.
* *protocol* - definitions of Plexus Interop protocol messages in [Protobuf](https://developers.google.com/protocol-buffers/) format.
* *samples* - sample interop metadata. 

Build and samples are currently tested on Windows environments; building and running on Linux/OSX environments is still experimental (see below).

## Build/Install

### General

Make sure that Java SDK is installed and [JAVA_HOME variable is set](https://www.mkyong.com/java/how-to-set-java_home-on-windows-10/).

All Plexus Interop components can be built using [Gradle](https://gradle.org/) tool using the following single command:

`./gradlew build --console plain`

Build produces artifacts into folder "bin"; the first run can take 10 minutes or more, depending on your Internet connection speed.

### Build in restricted environment

Build configuration should work fine on standard setup, with access to Internet. However it is quite often to have Dev setup behind corporate proxy. To run build successfully you'll need to adjust few configuration items shown below:

#### Gradle Proxy Settings

To adjust Gradle Proxy settings please update following lines in ```%USERPROFILE%\.gradle\gradle.properties```, using your Corporate Proxy's host and port instead of example values:  

```
systemProp.proxySet="true"
systemProp.http.proxyHost=proxy.host.acme.com
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.host.acme.com
systemProp.https.proxyPort=8080
systemProp.http.nonProxyHosts=*.acme.com|localhost
```

#### Environment variables

Please adjust following Environment variables:

 Name | Value/Example | Description 
 --- | --- | ---
 `HTTP_PROXY` | `http://userproxy.acme.com:8080` | Your corporate proxy host:port. 
 `HTTPS_PROXY` | `http://userproxy.acme.com:8080` | Your corporate proxy host:port. 
`NO_PROXY` | `127.0.0.1,localhost,.acme.com` | List of Intranet hosts to exclude from accessing through proxy.
`ELECTRON_MIRROR` | `https://github.com/electron/electron/releases/` | Host to download Electron binaries from, if different from default Github releases site.
`SASS_BINARY_SITE` | `https://github.com/sass/node-sass/releases/` | Host to download Saas binaries from, if different from default Github releases site.

There are also few recommended/optional variables to improve your build/development experience:

Name | Value/Example | Description
--- | --- | ---
`PLEXUS_BUILD_SKIP_DOTNET_TESTS` | `true` | Disable integration tests for .Net components to decrease build time.
`PLEXUS_BUILD_SKIP_WEB_TESTS` | `true` | Disable integration tests for Javascript components to decrease build time.
`GRADLE_USER_HOME` | `C:\Home\Gradle` | Gradle stores cached packages in `%USERPROFILE%\.gradle` by default, often pointing to Roaming Profile. So it worth to use some local folder instead. Please also copy existing Gradle settings to new folder.
`NUGET_PACKAGES` | `C:\Home\NuGetGlobalPackages` | Nuget stores cached binaries in `%USERPROFILE%\.nuget` by default, often pointing to Roaming Profile. So it worth to use some local folder instead.
`NPM_REGISTRY_INSTALL` | `https://npm.registry.acme.com` | Can be used to replace default `https://registry.npmjs.org` with another registry/mirror to download NPM dependencies from. 

### Using OSX

If running on OSX, please update `desktop/src/Plexus.Interop.sln` file and remove any code block that starts with `ProjectSection(ProjectDependencies)` and ends with `EndSection`; if you have already executed the `gradlew` build once, you must cleanup your local checkout using `git clean -d -f -X` (add `-n` for a dry run).

## Running Samples

After successful build samples binaries will be located in `bin` directory.

Run .Net to Web interop example on Windows:

- Go to `bin/win-x86/samples/greeting` (or `bin/osx-x64/samples/greeting` for OSX/Linux)
- Launch Broker – `LaunchBroker.cmd` (or `LaunchBroker.sh` for OSX/Linux)
- Launch (from a different terminal) Greeting Client – LaunchGreetingClient.cmd
    - Choose “Discovery” option (5) and “Greeting from Electron Web app” from discovery response

    ![Sample-1](./docs/src/main/asciidoc/images/sample-1.png "Sample-1")
    - Enter name, e.g. “John” and hit enter – Web Greeting Server app will be launched by Broker, print Greeting Request:

    ![Sample-2](./docs/src/main/asciidoc/images/sample-2.png "Sample-2")
    - And send response back to .Net Greeting Client

    ![Sample-3](./docs/src/main/asciidoc/images/sample-3.png "Sample-3")

    - Then choose Discovery (5) and “Greeting from .Net app” from discovery response
    - Enter another name, e.g. “Mike” and hit enter - .Net Greeting Server app will be launched and print greeting request:

    ![Sample-4](./docs/src/main/asciidoc/images/sample-4.png "Sample-4")


## Documentation

To check out docs, visit [https://plexus.finos.org](https://plexus.finos.org).

Documentation project is located in folder 'docs'. We build documentation using [AsciiDoc](http://asciidoc.org/).

To render diagrams during the build you need to have [graphviz](http://www.graphviz.org) installed on the machine.

Invoke the following command to run the documentation build:

`gradlew -p docs --console plain`

After successful build documentation is available via:

`bin/docs/html5/index.html`

## Contributing

1. Fork it (<https://github.com/finos/plexus-interop/fork>)
2. Create your feature branch (`git checkout -b feature/fooBar`)
3. Read our [contribution guidelines](.github/CONTRIBUTING.md) and [Community Code of Conduct](https://www.finos.org/code-of-conduct)
4. Commit your changes (`git commit -am 'Add some fooBar'`)
5. Push to the branch (`git push origin feature/fooBar`)
6. Create a new Pull Request

_NOTE:_ Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.

*Need an ICLA? Unsure if you are covered under an existing CCLA? Email [help@finos.org](mailto:help@finos.org)*

## Troubleshooting

Problem: Gradle fails to download dependencies, how to setup proxy configuration?

Solution: Pass proxy settings into Gradle via command-line parameters - e.g. `gradlew.bat -Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=8888 -Dhttps.proxyHost=myproxy.com -D https.proxyPort=4444 ...`

## Updating public documentation

As described above, public documentation is served using [GitHub Pages](https://help.github.com/articles/what-is-github-pages) and stored in `gh-pages` branch. So to update it, you simply need to push updated documentation to this branch. `gh-pages` branch structure is different from `master`, so manual update requires few steps:

* Clone (if haven't cloned it yet) repository to `plexus-interop` folder
* Clone another copy of repository to separate `plexus-interop-docs` folder, checkout `gh-pages` branch there
* Create branch for documentation update, e.g. `git checkout -b feature/gh-pages-update`
* Return back to folder with main line branch, build documentation `gradlew build -p docs --console plain`
* Copy documentation sources - `plexus-interop/docs` to `plexus-interop-docs/docs`
* Copy generated documentation - `plexus-interop/bin/html5` to `plexus-interop-docs` (project root)
* Go to `plexus-interop-docs`, push the changes and raise PR against `gh-pages` branch

## License
The code in this repository is distributed under the Apache License, Version 2.0.

Copyright 2017-2019 Plexus Interop Deutsche Bank AG


================================================
FILE: add-file-headers.bat
================================================
call gradlew.bat license --console plain --no-daemon


================================================
FILE: build.bat
================================================
call gradlew.bat build --console plain --no-daemon

================================================
FILE: build.gradle
================================================
buildscript {
    repositories {        
        mavenCentral()
    }
}

allprojects {
    repositories {        
        mavenCentral()
    }
}

subprojects {
    repositories {        
        mavenCentral()
    }
}

================================================
FILE: desktop/.gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Proto generated files
*.proto.cs

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
packages/

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
**/nuget-packages/*
**/.nuget-restored-packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Typescript v1 declaration files
typings/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# BenchmarkDotNet
BenchmarkDotNet.Artifacts/




# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff:
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries

# Sensitive or high-churn files:
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml

# Gradle:
.idea/**/gradle.xml
.idea/**/libraries

# CMake
cmake-build-debug/

# Mongo Explorer plugin:
.idea/**/mongoSettings.xml

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

================================================
FILE: desktop/.nuget-local-packages/README.txt
================================================
This folder is added to nuget.config as additional nuget feed.
Put packages here if you want to test them without publishing to remote nuget.

================================================
FILE: desktop/NuGet.Config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageRestore>
    <!-- Allow NuGet to download missing packages -->
    <add key="enabled" value="True" />
    <!-- Automatically check for missing packages during build in Visual Studio -->
    <add key="automatic" value="True" />
  </packageRestore>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="plexus-interop-local" value=".nuget-local-packages" />
  </packageSources>
  <activePackageSource>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="plexus-interop-local" value=".nuget-local-packages" />
  </activePackageSource>
</configuration>

================================================
FILE: desktop/README.txt
================================================
Prerequisites for development:
- Windows 7+
- Visual Studio 2017 15.7+ with enabled ".NET Core development" feature OR Visual Studio Code 1.15+ with C# plugin 1.8+.
- .NET Core SDK - any version in [2.1.300..2.1.399] for Windows x64 https://www.microsoft.com/net/download/core#/sdk
- .NET Framework 4.6+ https://www.microsoft.com/net/download/framework
- .NET Framework 4.5 Targeting Pack https://www.microsoft.com/net/targeting
- .NET Framework 4.6 Targeting Pack https://www.microsoft.com/net/targeting

Run "build.cmd" to build
Run "tests.cmd" to run tests

================================================
FILE: desktop/build.cmd
================================================
REM work around for https://github.com/dotnet/cli/issues/3995
set tmp=
set temp=
if not defined PLEXUS_BUILD_DOTNET_PARAMS (
  set PLEXUS_BUILD_DOTNET_PARAMS=/p:CORE_ONLY=true
)
CD %~dp0
dotnet.cmd build -c release src\Plexus.Interop.sln %PLEXUS_BUILD_DOTNET_PARAMS% && dotnet.cmd pack -c release -o ..\bin\nuget src\Plexus.Interop.sln %PLEXUS_BUILD_DOTNET_PARAMS%

================================================
FILE: desktop/build.gradle
================================================
import org.apache.tools.ant.taskdefs.condition.Os

plugins {
    id "com.github.hierynomus.license" version"0.14.0"
    id "de.undercouch.download" version "3.2.0"
}

repositories {
    mavenCentral()
}

def dotnetSdkVersion = "5.0"
def buildCache = System.getenv("PLEXUS_BUILD_CACHE_DIR") ?: new File("${rootDir}/build").absolutePath
def coreOnly = System.env['PLEXUS_BUILD_CORE_ONLY'] == 'true'
def net4Only = System.env['PLEXUS_BUILD_NET4_ONLY'] == 'true'
def nugetPublish = System.env['PLEXUS_BUILD_NUGET_PUBLISH'] == 'true'
def testsEnabled = Os.isFamily(Os.FAMILY_WINDOWS) && System.env['BuildRunner'] != "MyGet" && System.env['PLEXUS_BUILD_SKIP_DOTNET_TESTS'] != 'true'
def nugetVersion = System.getenv("PLEXUS_BUILD_NUGET_VERSION") ?: System.getenv("APPVEYOR_REPO_TAG_NAME")
def dotnetParams = nugetVersion == null ? " " : "/p:Version=$nugetVersion"

if (net4Only) {
    dotnetParams += " /p:NET4_ONLY=true"
} else if (coreOnly) {
    dotnetParams += " /p:CORE_ONLY=true"
}

license {
    header file("${rootDir}/FILE_HEADER")
    mapping {
        cs='JAVADOC_STYLE'
        proto='DOUBLESLASH_STYLE'
        interop='DOUBLESLASH_STYLE'
    }
    strictCheck true
}

task licenseFormatCS(type: com.hierynomus.gradle.license.tasks.LicenseFormat) {
    source = fileTree(dir: 'src').exclude("**/bin/*").exclude("**/obj/*")
            .exclude("**/google/protobuf/*.proto")
            .include("**/*.cs").include("**/*.proto").include("**/*.interop")
}

tasks["license"].dependsOn licenseFormatCS
licenseFormat.dependsOn licenseFormatCS

task prepareDotnet {
    doLast {

        println "Only netcore: $coreOnly"
        println "Only net4: $net4Only"
        println "Tests enabled: $testsEnabled"

        def dotnetVersion = new ByteArrayOutputStream()
        exec {
            ignoreExitValue true
            commandLine 'cmd', '/c', "$projectDir/dotnet.cmd", "--version"
            standardOutput = dotnetVersion;
        }
        dotnetVersion = "$dotnetVersion".trim()

        if (dotnetVersion.startsWith(dotnetSdkVersion)) {
            println "Dotnet SDK $dotnetSdkVersion is already installed, skipping downloading"
        } else {
            println "Dotnet SDK $dotnetSdkVersion is not installed on the current machine. 'dotnet --version' command output: '$dotnetVersion'. Downloading Dotnet SDK $dotnetSdkVersion to $buildCache."

            download {
                onlyIfNewer true
                src 'https://download.visualstudio.microsoft.com/download/pr/57776397-c87d-4eb8-9080-d58d180ccbe6/920afd9e178bdcd10fcfe696c1fdb88c/dotnet-sdk-5.0.408-win-x64.zip'
                dest "$buildCache/win/sdk/dotnet.zip"
            }

            copy {
                from zipTree("$buildCache/win/sdk/dotnet.zip")
                into "$buildCache/win/sdk/dotnet"
            }

            tasks.withType(Exec) {
                environment "PATH", "$buildCache/win/sdk/dotnet/"
                environment "PLEXUS_BUILD_DOTNET_DIR", "$buildCache/win/sdk/dotnet/"
	        }
        }
    }
}

task compile(type:Exec) {
    dependsOn 'license' 
    dependsOn prepareDotnet
    
    workingDir projectDir
    environment "PLEXUS_BUILD_DOTNET_PARAMS", dotnetParams
    commandLine "$projectDir/build.cmd"
}

if (testsEnabled) {
    task test(dependsOn: compile, type:Exec) {
        dependsOn prepareDotnet
        workingDir projectDir
    	ignoreExitValue false
        environment "PLEXUS_BUILD_DOTNET_PARAMS", dotnetParams
        commandLine "$projectDir/tests.cmd"
    }
} else {
    task test(dependsOn: compile) {
        doLast {
            println "Skipping tests because current platform is not Windows or running in MyGet"
        }
    }
}

if (nugetVersion != null && nugetPublish) {
    task push(dependsOn: test, type:Exec) {
        dependsOn prepareDotnet
        workingDir projectDir
        commandLine "$projectDir/push.cmd"
    }    
} else {
   task push(dependsOn: test) {
        doLast {
            println "Skipping push because nuget version is not specified, or publish disabled"
        }
    }
}

task clean {
    delete fileTree(dir: 'src').include("**/bin/*").include("**/obj/*")
}

task build (dependsOn: [compile, test, push]) {}

================================================
FILE: desktop/coverage-broker.cmd
================================================
REM work around for https://github.com/dotnet/cli/issues/3995
set tmp=
set temp=
CD %~dp0
if defined APPVEYOR (
	SET LOGGER=Appveyor
) else (
	SET LOGGER=xunit
)

if not defined NUGET_PACKAGES (
	SET NUGET_PACKAGES=%USERPROFILE%\.nuget\packages
)

if not exist ..\bin\test-reports mkdir ..\bin\test-reports

CALL dotnet restore src\Plexus.Interop.sln && dotnet build src\Plexus.Interop.sln -c debug /p:DebugType=Full && SET PLEXUS_TIMEOUT_MULTIPLIER=10 ^
  && %NUGET_PACKAGES%\OpenCover\4.7.922\tools\OpenCover.Console.exe -oldStyle -returntargetcode -register:user -output:..\bin\test-reports\dotnet-coverage.xml ^
  -filter:"+[Plexus.*]* -[*.Tests]* -[*.IntegrationTests]* -[*.Testing]* -[Plexus.Interop.Samples.*]* -[Plexus.*]*.Generated.* -[Plexus.Interop.Client*]* -[*.Client]*" -excludebyfile:*.proto.cs;*.g.cs -skipautoprops ^
  -targetdir:src -target:dotnet.exe -searchdirs:..\bin\win-x86\broker -targetargs:"test Plexus.Interop.Tests.sln /p:DebugType=Full --test-adapter-path:. --logger:%LOGGER% --verbosity quiet" ^
  && %NUGET_PACKAGES%\ReportGenerator\4.0.14\tools\net47\ReportGenerator.exe -reports:..\bin\test-reports\dotnet-coverage.xml -targetdir:..\bin\test-reports\dotnet-coverage -sourcedirs:src reporttypes:Html

================================================
FILE: desktop/coverage-client.cmd
================================================
REM work around for https://github.com/dotnet/cli/issues/3995
set tmp=
set temp=
CD %~dp0
if defined APPVEYOR (
	SET LOGGER=Appveyor
) else (
	SET LOGGER=xunit
)

if not defined NUGET_PACKAGES (
	SET NUGET_PACKAGES=%USERPROFILE%\.nuget\packages
)

if not exist ..\bin\test-reports mkdir ..\bin\test-reports

CALL dotnet restore src\Plexus.Interop.sln && dotnet build src\Plexus.Interop.sln -c debug /p:DebugType=Full && SET PLEXUS_TIMEOUT_MULTIPLIER=10 ^
  && %NUGET_PACKAGES%\OpenCover\4.7.922\tools\OpenCover.Console.exe -oldStyle -returntargetcode -register:user -output:..\bin\test-reports\dotnet-coverage.xml ^
  -filter:"+[Plexus.*]* -[*.Tests]* -[*.IntegrationTests]* -[*.Testing]* -[Plexus.Interop.Samples.*]* -[Plexus.*]*.Generated.* -[Plexus.Interop.Broker*]* -[Plexus.Interop.Apps.Manager*]* -[Plexus.Interop.Metamodel*]* -[*.Server]*" -excludebyfile:*.proto.cs;*.g.cs -skipautoprops ^
  -targetdir:src -target:dotnet.exe -searchdirs:..\bin\win-x86\broker -targetargs:"test Plexus.Interop.Tests.sln /p:DebugType=Full --test-adapter-path:. --logger:%LOGGER% --verbosity quiet" ^
  && %NUGET_PACKAGES%\ReportGenerator\4.0.14\tools\net47\ReportGenerator.exe -reports:..\bin\test-reports\dotnet-coverage.xml -targetdir:..\bin\test-reports\dotnet-coverage -sourcedirs:src reporttypes:Html

================================================
FILE: desktop/coverage.cmd
================================================
REM work around for https://github.com/dotnet/cli/issues/3995
set tmp=
set temp=
CD %~dp0
if defined APPVEYOR (
	SET LOGGER=Appveyor
) else (
	SET LOGGER=xunit
)

if not defined NUGET_PACKAGES (
	SET NUGET_PACKAGES=%USERPROFILE%\.nuget\packages
)

if not exist ..\bin\test-reports mkdir ..\bin\test-reports

CALL dotnet restore src\Plexus.Interop.sln && dotnet build src\Plexus.Interop.sln -c debug /p:DebugType=Full && SET PLEXUS_TIMEOUT_MULTIPLIER=10 ^
  && %NUGET_PACKAGES%\OpenCover\4.7.922\tools\OpenCover.Console.exe -oldStyle -returntargetcode -register:user -output:..\bin\test-reports\dotnet-coverage.xml ^
  -filter:"+[Plexus.*]* -[*.Tests]* -[*.IntegrationTests]* -[*.Testing]* -[Plexus.Interop.Samples.*]* -[Plexus.*]*.Generated.*" -excludebyfile:*.proto.cs;*.g.cs -skipautoprops ^
  -targetdir:src -target:dotnet.exe -searchdirs:..\bin\win-x86\broker -targetargs:"test Plexus.Interop.Tests.sln /p:DebugType=Full --test-adapter-path:. --logger:%LOGGER% --verbosity quiet" ^
  && %NUGET_PACKAGES%\ReportGenerator\4.0.14\tools\net47\ReportGenerator.exe -reports:..\bin\test-reports\dotnet-coverage.xml -targetdir:..\bin\test-reports\dotnet-coverage -sourcedirs:src reporttypes:Html

================================================
FILE: desktop/dotnet.cmd
================================================
@ECHO OFF
"%PLEXUS_BUILD_DOTNET_DIR%dotnet.exe" %*

================================================
FILE: desktop/global.json
================================================
{
  "projects": [
    "src"
  ],
  "sdk": {
    "version": "5.0.100",
    "allowPrerelease": false,
    "rollForward": "minor"
  }
}

================================================
FILE: desktop/push.cmd
================================================
@ECHO OFF
REM work around for https://github.com/dotnet/cli/issues/3995
set tmp=
set temp=
CD %~dp0
if not defined PLEXUS_BUILD_NUGET_PUSH_TIMEOUT (
	SET PLEXUS_BUILD_NUGET_PUSH_TIMEOUT=3600
)
dotnet nuget push ..\bin\nuget\*.nupkg -s %PLEXUS_BUILD_NUGET_SOURCE% -k %PLEXUS_BUILD_NUGET_API_KEY% -t %PLEXUS_BUILD_NUGET_PUSH_TIMEOUT% -n true

================================================
FILE: desktop/src/Common.csproj
================================================
<Project>
  <PropertyGroup>
    <LangVersion>latest</LangVersion>
    <Version>0.1.0</Version>
    <Authors>Plexus Interop Deutsche Bank AG</Authors>
    <Company>Deutsche Bank AG</Company>
    <Product>Plexus Interop</Product>
    <Copyright>Copyright © Plexus Interop Deutsche Bank AG 2017-2018</Copyright>
    <PackageLicenseUrl>https://github.com/finos-plexus/plexus-interop/blob/master/LICENSE</PackageLicenseUrl>
    <PackageProjectUrl>http://plexus.finos.org</PackageProjectUrl>
    <RepositoryUrl>https://github.com/finos-plexus/plexus-interop</RepositoryUrl>
    <PackageTags>plexus interop finos</PackageTags>
    <Description>Plexus Interop is metadata-centric language-agnostic desktop app-to-app interoperability framework with extensible model for launching new instances of desktop Apps on demand.</Description>
    <TieredCompilation>true</TieredCompilation>
  </PropertyGroup>
</Project>

================================================
FILE: desktop/src/Plexus.Channels/ChannelExtensions.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus.Channels
{
    using System;
    using System.Runtime.CompilerServices;
    using System.Threading;
    using System.Threading.Tasks;

    public static class ChannelExtensions
    {
        private static readonly Task CompletedTask;

        static ChannelExtensions()
        {
            var tcs = new TaskCompletionSource<Nothing>();
            tcs.SetResult(Nothing.Instance);
            CompletedTask = tcs.Task;
        }

        public static async Task CompleteAsync<T>(this ITerminatableWritableChannel<T> channel)
        {
            channel.TryComplete();
            await channel.Completion.ConfigureAwait(false);
        }

        public static async Task TerminateAsync<T>(this ITerminatableWritableChannel<T> channel, Exception error = null)
        {
            channel.TryTerminate(error);
            await channel.Completion.ConfigureAwait(false);
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static async Task WriteAsync<T>(this IWritableChannel<T> channel, T item, CancellationToken cancellationToken = default)
        {
            var result = await channel.TryWriteAsync(item, cancellationToken).ConfigureAwait(false);
            if (!result)
            {
                throw new OperationCanceledException();
            }
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static async Task WriteOrDisposeAsync<T>(this IWritableChannel<T> channel, T item, CancellationToken cancellationToken = default)
            where T : IDisposable
        {
            try
            {
                await channel.WriteAsync(item, cancellationToken).ConfigureAwait(false);
            }
            catch
            {
                item.Dispose();
                throw;
            }
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static async Task<bool> TryWriteAsync<T>(this IWritableChannel<T> channel, T item, CancellationToken cancellationToken = default)
        {
            do
            {
                if (channel.TryWrite(item))
                {
                    return true;
                }
            } while (await channel.WaitWriteAvailableAsync(cancellationToken).ConfigureAwait(false));
            return false;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static async ValueTask<T> ReadAsync<T>(this IReadableChannel<T> channel, CancellationToken cancellationToken = default)
        {
            var result = await channel.TryReadAsync(cancellationToken).ConfigureAwait(false);
            if (!result.HasValue)
            {
                throw new OperationCanceledException();
            }
            return result.Value;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static async ValueTask<Maybe<T>> TryReadAsync<T>(this IReadableChannel<T> channel, CancellationToken cancellationToken = default)
        {
            do
            {
                if (channel.TryRead(out var item))
                {
                    return item;
                }
            } while (await channel.WaitReadAvailableAsync(cancellationToken).ConfigureAwait(false));
            return Maybe<T>.Nothing;
        }
        
        public static void Terminate<T>(
            this ITerminatableWritableChannel<T> channel,
            Exception error = null)
        {
            if (!channel.TryTerminate(error))
            {
                throw new OperationCanceledException();
            }
        }

        public static void Complete<T>(this ITerminatableWritableChannel<T> channel)
        {
            if (!channel.TryComplete())
            {
                throw new OperationCanceledException();
            }
        }

        public static bool IsCompleted<T>(this IReadableChannel<T> channel)
        {
            return channel.Completion.IsCompleted;
        }

        public static bool IsCompleted<T>(this ITerminatableWritableChannel<T> channel)
        {
            return channel.Completion.IsCompleted;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static Task DisposeRemainingItemsAsync<T>(
            this IReadableChannel<T> channel) where T : IDisposable
        {
            return channel.ConsumeAsync(x => x.Dispose());
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static void DisposeBufferedItems<T>(
            this IReadableChannel<T> channel) where T : IDisposable
        {
            channel.ConsumeBufferedItems(x => x.Dispose());
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static void ConsumeBufferedItems<T>(
            this IReadableChannel<T> channel, Action<T> handle)
        {
            while (channel.TryRead(out var item))
            {
                handle(item);
            }
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static Task ConsumeAsync<T>(
            this IReadableChannel<T> channel,
            Action<T> handle,
            CancellationToken cancellationToken = default,
            Func<Task> onCompletedAsync = null,
            Func<Exception, Task> onTerminatedAsync = null)
        {
            return channel.ConsumeAsync(
                x =>
                {
                    handle(x);
                    return CompletedTask;
                },
                cancellationToken,
                onCompletedAsync,
                onTerminatedAsync);
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static async Task ConsumeAsync<T>(
            this IReadableChannel<T> channel,            
            Func<T, Task> handleAsync,
            CancellationToken cancellationToken = default,
            Func<Task> onCompletedAsync = null,
            Func<Exception, Task> onTerminatedAsync = null)
        {            
            try
            {
                do
                {
                    while (channel.TryRead(out var item))
                    {
                        await handleAsync(item).ConfigureAwait(false);
                    }
                } while (await channel.WaitReadAvailableAsync(cancellationToken).ConfigureAwait(false));

                if (onCompletedAsync != null)
                {
                    await onCompletedAsync().ConfigureAwait(false);
                }
            }
            catch (Exception ex)
            {
                if (onTerminatedAsync != null)
                {
                    await onTerminatedAsync(ex).ConfigureAwait(false);
                }
                else
                {
                    throw;
                }
            }
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static async ValueTask<T> FirstAsync<T>(
            this IReadableChannel<T> channel,
            Func<T, bool> predicate,
            CancellationToken cancellationToken = default)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                var item = await channel.TryReadAsync(cancellationToken);
                cancellationToken.ThrowIfCancellationRequested();
                if (item.HasValue && predicate(item.Value))
                {
                    return item.Value;
                }
            }

            throw new Exception("There is no first element in sequence");
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static async ValueTask<T> FirstAsync<T>(
            this IReadableChannel<T> channel,
            CancellationToken cancellationToken = default)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                var item = await channel.TryReadAsync(cancellationToken);
                cancellationToken.ThrowIfCancellationRequested();
                if (item.HasValue)
                {
                    return item.Value;
                }
            }

            throw new Exception("There is no first element in sequence");
        }
    }
}


================================================
FILE: desktop/src/Plexus.Channels/Plexus.Channels.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <Import Project="../Common.csproj" />

  <PropertyGroup>
    <TargetFrameworks Condition="'$(CORE_ONLY)' == '' And '$(NET4_ONLY)' == ''">netstandard2.0;net45</TargetFrameworks>
    <TargetFrameworks Condition="'$(NET4_ONLY)' != ''">net45</TargetFrameworks>
    <TargetFrameworks Condition="'$(CORE_ONLY)' != ''">netstandard2.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.Buffers" Version="4.5.0" />
    <PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.2" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Plexus.Common.Contracts\Plexus.Common.Contracts.csproj" />
    <ProjectReference Include="..\Plexus.Logging\Plexus.Logging.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: desktop/src/Plexus.Common.Contracts/AppConnectionDescriptor.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus
{
    public sealed class AppConnectionDescriptor
    {
        public UniqueId ConnectionId { get; }

        public string ApplicationId { get; }

        public UniqueId ApplicationInstanceId { get; }

        public TransportType TransportType { get; }

        public AppConnectionDescriptor(
            UniqueId connectionId,
            string applicationId,
            UniqueId applicationInstanceId,
            TransportType transportType)
        {
            ConnectionId = connectionId;
            ApplicationId = applicationId;
            ApplicationInstanceId = applicationInstanceId;
            TransportType = transportType;
        }

        public override bool Equals(object obj)
            => obj is AppConnectionDescriptor other
            && ConnectionId == other.ConnectionId
            && ApplicationId == other.ApplicationId
            && ApplicationInstanceId == other.ApplicationInstanceId
            && TransportType == other.TransportType;

        public override int GetHashCode()
            => ConnectionId.GetHashCode()
            ^ ApplicationId.GetHashCode()
            ^ ApplicationInstanceId.GetHashCode()
            ^ TransportType.GetHashCode();

        public override string ToString()
            => $"{ApplicationId}, " +
               $"{nameof(ConnectionId)}: {ConnectionId}, " +
               $"{nameof(ApplicationInstanceId)}: {ApplicationInstanceId}, " +
               $"{nameof(TransportType)}: {TransportType}";
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/BrokerFeatures.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus
{
    using System;

    [Flags]
    public enum BrokerFeatures : long
    {
        None = 0,
        CheckAppInstanceId = 1,
        UseWSS = 2,
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/Channels/ChannelWriteTimeoutException.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus.Channels
{
    using System;

    public sealed class ChannelWriteTimeoutException : Exception
    {
        public ChannelWriteTimeoutException(TimeSpan timeout) : base(
            $"Timeout {timeout.TotalSeconds}sec on writing to channel")
        {
        }
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/Channels/IChannel.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 namespace Plexus.Channels
{
    public interface IChannel<T>
    {
        ITerminatableWritableChannel<T> Out { get; }

        IReadableChannel<T> In { get; }
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/Channels/IReadableChannel.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 namespace Plexus.Channels
{    
    using System.Threading;
    using System.Threading.Tasks;

    public interface IReadableChannel<T>
    {
        Task Completion { get; }

        bool TryRead(out T item);

        Task<bool> WaitReadAvailableAsync(CancellationToken cancellationToken = default);
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/Channels/ITerminatableWritableChannel.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus.Channels
{
    using System;

    public interface ITerminatableWritableChannel<in T> : IWritableChannel<T>
    {
        bool TryComplete();

        bool TryTerminate(Exception error = null);
    }
}

================================================
FILE: desktop/src/Plexus.Common.Contracts/Channels/IWritableChannel.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 namespace Plexus.Channels
{
    using System.Threading;
    using System.Threading.Tasks;

    public interface IWritableChannel<in T>
    {
        Task Completion { get; }

        bool TryWrite(T item);

        Task<bool> WaitWriteAvailableAsync(CancellationToken cancellationToken = default);
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/EnvironmentHelper.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus
{
    using System;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;

    public static class EnvironmentHelper
    {
        public const string BrokerWorkingDirVarName = "PLEXUS_BROKER_WORKING_DIR";
        public const string AppInstanceIdVarName = "PLEXUS_APP_INSTANCE_ID";
        public const string ParentProcessIdVarName = "PLEXUS_PARENT_PROCESS_ID";
        public const string PlexusTimeoutMultiplier = "PLEXUS_TIMEOUT_MULTIPLIER";
        public const string PlexusBrokerWebSocketAddress = "PLEXUS_BROKER_WEBSOCKET_ADDRESS";
        public const string PlexusBrokerWebSocketSecureAddress = "PLEXUS_BROKER_WEBSOCKETSECURE_ADDRESS";
        public const string PlexusBrokerPipeAddress = "PLEXUS_BROKER_PIPE_ADDRESS";
        public const string BrokerFeatures = "PLEXUS_BROKER_FEATURES";
        public const string LauncherId = "PLEXUS_TRUSTED_LAUNCHER_ID";
        public const string CertificatePath = "PLEXUS_CERTIFICATE_PATH";
        public const string CertificatePassword = "PLEXUS_CERTIFICATE_PASSWORD";
        public const string CertificateKeyStorageFlags = "PLEXUS_CERTIFICATE_KEY_STORAGE_FLAGS";
        public const string SslProtocols = "PLEXUS_SSL_PROTOCOLS";

        public static string GetBrokerWorkingDir()
        {
            return Environment.GetEnvironmentVariable(BrokerWorkingDirVarName);
        }

        public static string GetBrokerWorkingDirOrThrow()
        {
            return GetBrokerWorkingDir() ?? throw new InvalidOperationException(
                       $"Expected environment variable {BrokerWorkingDirVarName} not set");
        }

        public static string GetAppInstanceId()
        {
            return Environment.GetEnvironmentVariable(AppInstanceIdVarName);
        }

        public static string GetParentProcessId()
        {
            return Environment.GetEnvironmentVariable(ParentProcessIdVarName);
        }

        public static double GetPlexusTimeoutMultiplier()
        {
            return double.TryParse(Environment.GetEnvironmentVariable(PlexusTimeoutMultiplier), out var multiplier)
                ? multiplier
                : 1;
        }

        public static string GetWebSocketAddress()
        {
            return Environment.GetEnvironmentVariable(PlexusBrokerWebSocketAddress);
        }

        public static string GetWebSocketSecureAddress()
        {
            return Environment.GetEnvironmentVariable(PlexusBrokerWebSocketSecureAddress);
        }

        public static string GetPipeAddress()
        {
            return Environment.GetEnvironmentVariable(PlexusBrokerPipeAddress);
        }

        public static BrokerFeatures GetBrokerFeatures()
        {
            var rawValue = Environment.GetEnvironmentVariable(BrokerFeatures);
            if (string.IsNullOrEmpty(rawValue))
                return Plexus.BrokerFeatures.None;

            return (BrokerFeatures)Enum.Parse(typeof(BrokerFeatures), rawValue);
        }

        public static UniqueId? GetLauncherAppInstanceId()
        {
            var rawValue = Environment.GetEnvironmentVariable(LauncherId);
            if (string.IsNullOrEmpty(rawValue))
                return null;

            return UniqueId.FromString(rawValue);
        }

        public static string GetCertificatePath()
        {
            return Environment.GetEnvironmentVariable(CertificatePath);
        }

        public static string GetCertificatePassword()
        {
            return Environment.GetEnvironmentVariable(CertificatePassword);
        }

        public static X509KeyStorageFlags GetCertificateKeyStorageFlags()
        {
            var rawValue = Environment.GetEnvironmentVariable(CertificateKeyStorageFlags);
            if (string.IsNullOrEmpty(rawValue))
                return X509KeyStorageFlags.DefaultKeySet;

            return (X509KeyStorageFlags)Enum.Parse(typeof(X509KeyStorageFlags), rawValue);
        }

        public static SslProtocols GetSslProtocols()
        {
            var rawValue = Environment.GetEnvironmentVariable(SslProtocols);
            if (string.IsNullOrEmpty(rawValue))
                return System.Security.Authentication.SslProtocols.None;

            return (SslProtocols)Enum.Parse(typeof(SslProtocols), rawValue);
        }
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/Maybe.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
using System;
using System.Collections.Generic;

namespace Plexus
{
    public struct Maybe<T> : IEquatable<Maybe<T>>
    {
        public static readonly Maybe<T> Nothing = new Maybe<T>();

        private readonly T _value;

        public Maybe(T value)
        {
            HasValue = true;
            _value = value;
        }

        public bool HasValue { get; }

        public T Value
        {
            get
            {
                if (!HasValue)
                {
                    throw new InvalidOperationException("Value not set");
                }
                return _value;
            }
        }

        public static implicit operator Maybe<T>(T value)
        {
            return new Maybe<T>(value);
        }

        public static implicit operator Maybe<T>(Nothing value)
        {
            return Nothing;
        }

        public T GetValueOrDefault()
        {
            return HasValue ? Value : default;
        }

        public T GetValueOrDefault(T defaultValue)
        {
            return HasValue ? Value : defaultValue;
        }

        public T GetValueOrThrowException<TException>(TException exception) where TException : Exception
        {
            if (!HasValue)
            {
                throw exception;
            }
            return Value;
        }

        public T GetValueOrThrowException<TException>() where TException : Exception, new()
        {
            if (!HasValue)
            {
                throw new TException();
            }
            return Value;
        }

        public override string ToString()
        {
            return HasValue ? Value?.ToString() : Plexus.Nothing.Instance.ToString();
        }

        public override bool Equals(object obj)
        {
            return obj is Maybe<T> maybe && Equals(maybe);
        }

        public bool Equals(Maybe<T> other)
        {
            return EqualityComparer<T>.Default.Equals(_value, other._value) &&
                   HasValue == other.HasValue;
        }
        
        public static bool operator ==(Maybe<T> left, Maybe<T> right)
        {
            return left.Equals(right);
        }

        public static bool operator !=(Maybe<T> left, Maybe<T> right)
        {
            return !left.Equals(right);
        }

        public override int GetHashCode()
        {
            var hashCode = 1814622215;
            hashCode = hashCode * -1521134295 + base.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer<T>.Default.GetHashCode(_value);
            hashCode = hashCode * -1521134295 + HasValue.GetHashCode();
            return hashCode;
        }
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/Nothing.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus
{
    public struct Nothing
    {
        public static readonly Nothing Instance = new Nothing();

        public override bool Equals(object obj)
        {
            return obj is Nothing;
        }

        public override int GetHashCode()
        {
            return 0;
        }

        public override string ToString()
        {
            return "<Nothing>";
        }
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/Plexus.Common.Contracts.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <Import Project="../Common.csproj" />

  <PropertyGroup>
    <TargetFrameworks Condition="'$(CORE_ONLY)' == '' And '$(NET4_ONLY)' == ''">netstandard2.0;net45</TargetFrameworks>
    <TargetFrameworks Condition="'$(NET4_ONLY)' != ''">net45</TargetFrameworks>
    <TargetFrameworks Condition="'$(CORE_ONLY)' != ''">netstandard2.0</TargetFrameworks>
    <RootNamespace>Plexus</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.2" />
    <PackageReference Include="System.ValueTuple" Version="4.5.0" />
  </ItemGroup>

</Project>

================================================
FILE: desktop/src/Plexus.Common.Contracts/Pools/IPooledBuffer.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus.Pools
{
    public interface IPooledBuffer : IPooledObject
    {
        byte[] Array { get; }

        int Offset { get; }

        int Count { get; }
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/Pools/IPooledObject.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus.Pools
{
    using System;

    public interface IPooledObject : IDisposable
    {
        void Retain();
    }
}


================================================
FILE: desktop/src/Plexus.Common.Contracts/TransportType.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus
{
    public enum TransportType
    {
        Pipe,
        Ws,
        Wss
    }
}

================================================
FILE: desktop/src/Plexus.Common.Contracts/UniqueId.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus
{
    using System;
    using System.Linq;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;

    // This class keeps UUID bytes in little-endian order
    [StructLayout(LayoutKind.Sequential)]
    public struct UniqueId : IEquatable<UniqueId>
    {
        public static readonly UniqueId Empty = new UniqueId(0, 0);

        private readonly string _string;

        private UniqueId(ulong hi, ulong lo)
        {
            Hi = hi;
            Lo = lo;
            var hiPart = BitConverter.GetBytes(hi);
            var loPart = BitConverter.GetBytes(lo);
            if (BitConverter.IsLittleEndian)
            {
                Reverse(hiPart, 0, 8);
                Reverse(loPart, 0, 8);
            }
            var bytes = hiPart.Concat(loPart).ToArray();
            _string = BitConverter.ToString(bytes).Replace("-", "");
        }
        
        public ulong Hi { get; }

        public ulong Lo { get; }

        public string String => _string ?? Empty.String;

        public static UniqueId Generate()
        {
            var guid = Guid.NewGuid();
            var bytes = guid.ToByteArray();
            if (BitConverter.IsLittleEndian)
            {
                Convert(bytes);
            }
            Reverse(bytes, 0, 16);
            var hi = GetLong(bytes, 0);
            var lo = GetLong(bytes, 8);            
            return new UniqueId(hi, lo);
        }

        public static UniqueId FromString(string value)
        {
            var bytes = HexStringToByteArray(value);
            return new UniqueId(GetLong(bytes, 0), GetLong(bytes, 8));
        }

        public static UniqueId FromHiLo(ulong hi, ulong lo)
        {
            return new UniqueId(hi, lo);
        }

        public override string ToString()
        {
            return String;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private static void Reverse(byte[] bytes, int from, int to)
        {
            for (var i = from; i < (to - from) / 2; i++)
            {
                var t = bytes[i];                
                bytes[i] = bytes[to - i - 1];
                bytes[to - i - 1] = t;
            }
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private static void Convert(byte[] guidBytes)
        {
            // reverse first 4 bytes
            var t = guidBytes[0];
            guidBytes[0] = guidBytes[3];
            guidBytes[3] = t;
            guidBytes[3] = t;
            t = guidBytes[1];
            guidBytes[1] = guidBytes[2];
            guidBytes[2] = t;

            // reverse next 2 bytes
            t = guidBytes[4];
            guidBytes[4] = guidBytes[5];
            guidBytes[5] = t;

            // reverse next 2 bytes
            t = guidBytes[6];
            guidBytes[6] = guidBytes[7];
            guidBytes[7] = t;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private static byte[] HexStringToByteArray(string hex)
        {
            if (hex.Length % 2 == 1)
            {
                throw new Exception("The binary key cannot have an odd number of digits");
            }

            var arr = new byte[hex.Length >> 1];

            for (var i = 0; i < hex.Length >> 1; ++i)
            {
                arr[i] = (byte)((GetHexVal(hex[i << 1]) << 4) + (GetHexVal(hex[(i << 1) + 1])));
            }

            return arr;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private static int GetHexVal(char hex)
        {
            var val = (int)hex;
            //For uppercase A-F letters:
            return val - (val < 58 ? 48 : 55);
        }

        private static ulong GetLong(byte[] bytes, int i)
        {
            ulong x = 0;
            for (var j = 0; j < 8; j++)
            {
                x = (x << 8) | bytes[i + j];
            }
            return x;
        }

        public static bool operator ==(UniqueId left, UniqueId right)
        {
            return left.Equals(right);
        }

        public static bool operator !=(UniqueId left, UniqueId right)
        {
            return !left.Equals(right);
        }

        public bool Equals(UniqueId other)
        {
            return Hi == other.Hi && Lo == other.Lo;
        }

        public override bool Equals(object obj)
        {
            if (ReferenceEquals(null, obj)) return false;
            return obj is UniqueId && Equals((UniqueId) obj);
        }

        public override int GetHashCode()
        {
            unchecked
            {
                return (Hi.GetHashCode() * 397) ^ Lo.GetHashCode();
            }
        }
    }
}


================================================
FILE: desktop/src/Plexus.Host/Generate.cmd
================================================
set INTEROP_METADATA_PATH=..\..\..\dsl\interop-lang\src\main\resources
set INTEROP_MANIFEST_PATH=command_line_tool.interop
set CSHARP_NAMESPACE=internal_access:Plexus.Host.Internal.Generated
set CSHARP_OUT=Internal\Generated

plexus gen-csharp -b %INTEROP_METADATA_PATH% -i %INTEROP_MANIFEST_PATH% -o %CSHARP_OUT% -n %CSHARP_NAMESPACE% -v

================================================
FILE: desktop/src/Plexus.Host/Internal/BrokerCliOptions.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus.Host.Internal
{
    using CommandLine;
    using CommandLine.Text;

#if !NET45
    [Verb("start", HelpText = "Start interop broker.")]
#endif
    internal class StartCliOptions
    {
        [Option('m', "metadata", Required = false, HelpText = "Directory to seek for metadata files: apps.json and interop.json.")]
        public string Metadata { get; set; }

        [Option('p', "port", Required = false, HelpText = "WS port number to listen. If omitted, free port is selected automatically.")]
        public uint Port { get; set; }

        [Option("wssport", Required = false, HelpText = "WSS port number to listen. If omitted, free port is selected automatically.")]
        public uint WssPort { get; set; }
    }

#if !NET45
    [Verb("broker", HelpText = "Start interop broker.")]
#endif
    internal class BrokerCliOptions : StartCliOptions
    {
    }
}


================================================
FILE: desktop/src/Plexus.Host/Internal/BrokerProgram.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace Plexus.Host.Internal
{
    using System.Threading;
    using System.Threading.Tasks;
    using Plexus.Interop;

    internal sealed class BrokerProgram : IProgram
    {
        private int _stopped;
        private IBroker _broker;

        private readonly BrokerOptions _options;

        public BrokerProgram(BrokerOptions options)
        {
            _options = options;
        }

        public string Name { get; } = "Interop Broker";

        public string InstanceKey { get; } = "plexus-interop-broker";

        public InstanceAwareness InstanceAwareness { get; } = InstanceAwareness.SingleInstancePerDirectory;

        public async Task<Task> StartAsync()
        {
            _broker = BrokerFactory.Instance.Create(_options);
            if (_stopped == 1)
            {
                return Task.FromResult(0);
            }
            await _broker.StartAsync().ConfigureAwait(false);
            return _broker.Completion;
        }

        public async Task ShutdownAsync()
        {
            if (Interlocked.Exchange(ref _stopped, 1) == 0 && _broker != null)
            {
                _broker.Stop();
                await _broker.Completion.ConfigureAwait(false);
            }
        }
    }
}

================================================
FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppConnectionDescriptor.msg.g.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: interop/app_connection_descriptor.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Plexus.Host.Internal.Generated {

  /// <summary>Holder for reflection information generated from interop/app_connection_descriptor.proto</summary>
  internal static partial class AppConnectionDescriptorReflection {

    #region Descriptor
    /// <summary>File descriptor for interop/app_connection_descriptor.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static AppConnectionDescriptorReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CidpbnRlcm9wL2FwcF9jb25uZWN0aW9uX2Rlc2NyaXB0b3IucHJvdG8SB2lu",
            "dGVyb3AaF2ludGVyb3AvdW5pcXVlX2lkLnByb3RvGhVpbnRlcm9wL29wdGlv",
            "bnMucHJvdG8i1AEKF0FwcENvbm5lY3Rpb25EZXNjcmlwdG9yEigKDWNvbm5l",
            "Y3Rpb25faWQYASABKAsyES5pbnRlcm9wLlVuaXF1ZUlkEg4KBmFwcF9pZBgC",
            "IAEoCRIqCg9hcHBfaW5zdGFuY2VfaWQYAyABKAsyES5pbnRlcm9wLlVuaXF1",
            "ZUlkEi4KDnRyYW5zcG9ydF90eXBlGAQgASgOMhYuaW50ZXJvcC5UcmFuc3Bv",
            "cnRUeXBlOiOS2wQfaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvcio3",
            "Cg1UcmFuc3BvcnRUeXBlEgsKB1Vua25vd24QABIICgRQaXBlEAESBgoCV3MQ",
            "AhIHCgNXc3MQA0IhqgIeUGxleHVzLkhvc3QuSW50ZXJuYWwuR2VuZXJhdGVk",
            "YgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Plexus.Host.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Host.Internal.Generated.OptionsReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Host.Internal.Generated.TransportType), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppConnectionDescriptor), global::Plexus.Host.Internal.Generated.AppConnectionDescriptor.Parser, new[]{ "ConnectionId", "AppId", "AppInstanceId", "TransportType" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  internal enum TransportType {
    [pbr::OriginalName("Unknown")] Unknown = 0,
    [pbr::OriginalName("Pipe")] Pipe = 1,
    [pbr::OriginalName("Ws")] Ws = 2,
    [pbr::OriginalName("Wss")] Wss = 3,
  }

  #endregion

  #region Messages
  internal sealed partial class AppConnectionDescriptor : pb::IMessage<AppConnectionDescriptor>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AppConnectionDescriptor> _parser = new pb::MessageParser<AppConnectionDescriptor>(() => new AppConnectionDescriptor());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AppConnectionDescriptor> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppConnectionDescriptorReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectionDescriptor() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectionDescriptor(AppConnectionDescriptor other) : this() {
      connectionId_ = other.connectionId_ != null ? other.connectionId_.Clone() : null;
      appId_ = other.appId_;
      appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null;
      transportType_ = other.transportType_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectionDescriptor Clone() {
      return new AppConnectionDescriptor(this);
    }

    /// <summary>Field number for the "connection_id" field.</summary>
    public const int ConnectionIdFieldNumber = 1;
    private global::Plexus.Host.Internal.Generated.UniqueId connectionId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.UniqueId ConnectionId {
      get { return connectionId_; }
      set {
        connectionId_ = value;
      }
    }

    /// <summary>Field number for the "app_id" field.</summary>
    public const int AppIdFieldNumber = 2;
    private string appId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AppId {
      get { return appId_; }
      set {
        appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "app_instance_id" field.</summary>
    public const int AppInstanceIdFieldNumber = 3;
    private global::Plexus.Host.Internal.Generated.UniqueId appInstanceId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.UniqueId AppInstanceId {
      get { return appInstanceId_; }
      set {
        appInstanceId_ = value;
      }
    }

    /// <summary>Field number for the "transport_type" field.</summary>
    public const int TransportTypeFieldNumber = 4;
    private global::Plexus.Host.Internal.Generated.TransportType transportType_ = global::Plexus.Host.Internal.Generated.TransportType.Unknown;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.TransportType TransportType {
      get { return transportType_; }
      set {
        transportType_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AppConnectionDescriptor);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AppConnectionDescriptor other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ConnectionId, other.ConnectionId)) return false;
      if (AppId != other.AppId) return false;
      if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false;
      if (TransportType != other.TransportType) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (connectionId_ != null) hash ^= ConnectionId.GetHashCode();
      if (AppId.Length != 0) hash ^= AppId.GetHashCode();
      if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode();
      if (TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) hash ^= TransportType.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (connectionId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ConnectionId);
      }
      if (AppId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AppId);
      }
      if (appInstanceId_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(AppInstanceId);
      }
      if (TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) {
        output.WriteRawTag(32);
        output.WriteEnum((int) TransportType);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (connectionId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ConnectionId);
      }
      if (AppId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AppId);
      }
      if (appInstanceId_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(AppInstanceId);
      }
      if (TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) {
        output.WriteRawTag(32);
        output.WriteEnum((int) TransportType);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (connectionId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionId);
      }
      if (AppId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId);
      }
      if (appInstanceId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId);
      }
      if (TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) TransportType);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AppConnectionDescriptor other) {
      if (other == null) {
        return;
      }
      if (other.connectionId_ != null) {
        if (connectionId_ == null) {
          ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId();
        }
        ConnectionId.MergeFrom(other.ConnectionId);
      }
      if (other.AppId.Length != 0) {
        AppId = other.AppId;
      }
      if (other.appInstanceId_ != null) {
        if (appInstanceId_ == null) {
          AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId();
        }
        AppInstanceId.MergeFrom(other.AppInstanceId);
      }
      if (other.TransportType != global::Plexus.Host.Internal.Generated.TransportType.Unknown) {
        TransportType = other.TransportType;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (connectionId_ == null) {
              ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId();
            }
            input.ReadMessage(ConnectionId);
            break;
          }
          case 18: {
            AppId = input.ReadString();
            break;
          }
          case 26: {
            if (appInstanceId_ == null) {
              AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId();
            }
            input.ReadMessage(AppInstanceId);
            break;
          }
          case 32: {
            TransportType = (global::Plexus.Host.Internal.Generated.TransportType) input.ReadEnum();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (connectionId_ == null) {
              ConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId();
            }
            input.ReadMessage(ConnectionId);
            break;
          }
          case 18: {
            AppId = input.ReadString();
            break;
          }
          case 26: {
            if (appInstanceId_ == null) {
              AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId();
            }
            input.ReadMessage(AppInstanceId);
            break;
          }
          case 32: {
            TransportType = (global::Plexus.Host.Internal.Generated.TransportType) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code


================================================
FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppLaunchMode.msg.g.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: interop/app_launch_mode.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Plexus.Host.Internal.Generated {

  /// <summary>Holder for reflection information generated from interop/app_launch_mode.proto</summary>
  internal static partial class AppLaunchModeReflection {

    #region Descriptor
    /// <summary>File descriptor for interop/app_launch_mode.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static AppLaunchModeReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Ch1pbnRlcm9wL2FwcF9sYXVuY2hfbW9kZS5wcm90bxIHaW50ZXJvcBoVaW50",
            "ZXJvcC9vcHRpb25zLnByb3RvKjgKDUFwcExhdW5jaE1vZGUSEwoPU0lOR0xF",
            "X0lOU1RBTkNFEAASEgoOTVVMVElfSU5TVEFOQ0UQAUIhqgIeUGxleHVzLkhv",
            "c3QuSW50ZXJuYWwuR2VuZXJhdGVkYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Plexus.Host.Internal.Generated.OptionsReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Host.Internal.Generated.AppLaunchMode), }, null, null));
    }
    #endregion

  }
  #region Enums
  internal enum AppLaunchMode {
    [pbr::OriginalName("SINGLE_INSTANCE")] SingleInstance = 0,
    [pbr::OriginalName("MULTI_INSTANCE")] MultiInstance = 1,
  }

  #endregion

}

#endregion Designer generated code


================================================
FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppLifecycleService.msg.g.cs
================================================
/**
 * Copyright 2017-2021 Plexus Interop Deutsche Bank AG
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: interop/app_lifecycle_service.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Plexus.Host.Internal.Generated {

  /// <summary>Holder for reflection information generated from interop/app_lifecycle_service.proto</summary>
  internal static partial class AppLifecycleServiceReflection {

    #region Descriptor
    /// <summary>File descriptor for interop/app_lifecycle_service.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static AppLifecycleServiceReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiNpbnRlcm9wL2FwcF9saWZlY3ljbGVfc2VydmljZS5wcm90bxIHaW50ZXJv",
            "cBoXaW50ZXJvcC91bmlxdWVfaWQucHJvdG8aHWludGVyb3AvYXBwX2xhdW5j",
            "aF9tb2RlLnByb3RvGidpbnRlcm9wL2FwcF9jb25uZWN0aW9uX2Rlc2NyaXB0",
            "b3IucHJvdG8aI2ludGVyb3AvaW52b2NhdGlvbl9kZXNjcmlwdG9yLnByb3Rv",
            "Ghtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8aFWludGVyb3Avb3B0aW9u",
            "cy5wcm90byJ0ChFSZXNvbHZlQXBwUmVxdWVzdBIOCgZhcHBfaWQYASABKAkS",
            "MAoQYXBwX3Jlc29sdmVfbW9kZRgCIAEoDjIWLmludGVyb3AuQXBwTGF1bmNo",
            "TW9kZTodktsEGWludGVyb3AuUmVzb2x2ZUFwcFJlcXVlc3QisAEKElJlc29s",
            "dmVBcHBSZXNwb25zZRIqCg9hcHBfaW5zdGFuY2VfaWQYASABKAsyES5pbnRl",
            "cm9wLlVuaXF1ZUlkEiwKEWFwcF9jb25uZWN0aW9uX2lkGAIgASgLMhEuaW50",
            "ZXJvcC5VbmlxdWVJZBIgChhpc19uZXdfaW5zdGFuY2VfbGF1bmNoZWQYAyAB",
            "KAg6HpLbBBppbnRlcm9wLlJlc29sdmVBcHBSZXNwb25zZSLWAQoRQXBwTGlm",
            "ZWN5Y2xlRXZlbnQSLwoJY29ubmVjdGVkGAEgASgLMhouaW50ZXJvcC5BcHBD",
            "b25uZWN0ZWRFdmVudEgAEjUKDGRpc2Nvbm5lY3RlZBgCIAEoCzIdLmludGVy",
            "b3AuQXBwRGlzY29ubmVjdGVkRXZlbnRIABIxCgVlcnJvchgDIAEoCzIgLmlu",
            "dGVyb3AuQXBwQ29ubmVjdGlvbkVycm9yRXZlbnRIADodktsEGWludGVyb3Au",
            "QXBwTGlmZWN5Y2xlRXZlbnRCBwoFZXZlbnQitwEKD0ludm9jYXRpb25FdmVu",
            "dBI9ChJpbnZvY2F0aW9uX3N0YXJ0ZWQYASABKAsyHy5pbnRlcm9wLkludm9j",
            "YXRpb25TdGFydGVkRXZlbnRIABI/ChNpbnZvY2F0aW9uX2ZpbmlzaGVkGAIg",
            "ASgLMiAuaW50ZXJvcC5JbnZvY2F0aW9uRmluaXNoZWRFdmVudEgAOhuS2wQX",
            "aW50ZXJvcC5JbnZvY2F0aW9uRXZlbnRCBwoFZXZlbnQicwoRQXBwQ29ubmVj",
            "dGVkRXZlbnQSPwoVY29ubmVjdGlvbl9kZXNjcmlwdG9yGAEgASgLMiAuaW50",
            "ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvcjodktsEGWludGVyb3AuQXBw",
            "Q29ubmVjdGVkRXZlbnQieQoUQXBwRGlzY29ubmVjdGVkRXZlbnQSPwoVY29u",
            "bmVjdGlvbl9kZXNjcmlwdG9yGAEgASgLMiAuaW50ZXJvcC5BcHBDb25uZWN0",
            "aW9uRGVzY3JpcHRvcjogktsEHGludGVyb3AuQXBwRGlzY29ubmVjdGVkRXZl",
            "bnQifwoXQXBwQ29ubmVjdGlvbkVycm9yRXZlbnQSPwoVY29ubmVjdGlvbl9k",
            "ZXNjcmlwdG9yGAEgASgLMiAuaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3Jp",
            "cHRvcjojktsEH2ludGVyb3AuQXBwQ29ubmVjdGlvbkVycm9yRXZlbnQiegoW",
            "SW52b2NhdGlvblN0YXJ0ZWRFdmVudBI8ChVpbnZvY2F0aW9uX2Rlc2NyaXB0",
            "b3IYASABKAsyHS5pbnRlcm9wLkludm9jYXRpb25EZXNjcmlwdG9yOiKS2wQe",
            "aW50ZXJvcC5JbnZvY2F0aW9uU3RhcnRlZEV2ZW50IrwBChdJbnZvY2F0aW9u",
            "RmluaXNoZWRFdmVudBI8ChVpbnZvY2F0aW9uX2Rlc2NyaXB0b3IYASABKAsy",
            "HS5pbnRlcm9wLkludm9jYXRpb25EZXNjcmlwdG9yEikKBnJlc3VsdBgCIAEo",
            "DjIZLmludGVyb3AuSW52b2NhdGlvblJlc3VsdBITCgtkdXJhdGlvbl9tcxgD",
            "IAEoAzojktsEH2ludGVyb3AuSW52b2NhdGlvbkZpbmlzaGVkRXZlbnQiqAEK",
            "FUdldENvbm5lY3Rpb25zUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEo",
            "CRIqCg9hcHBfaW5zdGFuY2VfaWQYAiABKAsyES5pbnRlcm9wLlVuaXF1ZUlk",
            "EigKDWNvbm5lY3Rpb25faWQYAyABKAsyES5pbnRlcm9wLlVuaXF1ZUlkOiGS",
            "2wQdaW50ZXJvcC5HZXRDb25uZWN0aW9uc1JlcXVlc3QicwoWR2V0Q29ubmVj",
            "dGlvbnNSZXNwb25zZRI1Cgtjb25uZWN0aW9ucxgBIAMoCzIgLmludGVyb3Au",
            "QXBwQ29ubmVjdGlvbkRlc2NyaXB0b3I6IpLbBB5pbnRlcm9wLkdldENvbm5l",
            "Y3Rpb25zUmVzcG9uc2Ui8QEKE0dldENvbm5lY3Rpb25zRXZlbnQSNQoLY29u",
            "bmVjdGlvbnMYASADKAsyIC5pbnRlcm9wLkFwcENvbm5lY3Rpb25EZXNjcmlw",
            "dG9yEjoKDm5ld19jb25uZWN0aW9uGAIgASgLMiAuaW50ZXJvcC5BcHBDb25u",
            "ZWN0aW9uRGVzY3JpcHRvckgAEj0KEWNsb3NlZF9jb25uZWN0aW9uGAMgASgL",
            "MiAuaW50ZXJvcC5BcHBDb25uZWN0aW9uRGVzY3JpcHRvckgAOh+S2wQbaW50",
            "ZXJvcC5HZXRDb25uZWN0aW9uc0V2ZW50QgcKBWV2ZW50KjsKEEludm9jYXRp",
            "b25SZXN1bHQSDQoJU3VjY2VlZGVkEAASDAoIQ2FuY2VsZWQQARIKCgZGYWls",
            "ZWQQAjLJAwoTQXBwTGlmZWN5Y2xlU2VydmljZRJFCgpSZXNvbHZlQXBwEhou",
            "aW50ZXJvcC5SZXNvbHZlQXBwUmVxdWVzdBobLmludGVyb3AuUmVzb2x2ZUFw",
            "cFJlc3BvbnNlEk8KF0dldExpZmVjeWNsZUV2ZW50U3RyZWFtEhYuZ29vZ2xl",
            "LnByb3RvYnVmLkVtcHR5GhouaW50ZXJvcC5BcHBMaWZlY3ljbGVFdmVudDAB",
            "Ek4KGEdldEludm9jYXRpb25FdmVudFN0cmVhbRIWLmdvb2dsZS5wcm90b2J1",
            "Zi5FbXB0eRoYLmludGVyb3AuSW52b2NhdGlvbkV2ZW50MAESUQoOR2V0Q29u",
            "bmVjdGlvbnMSHi5pbnRlcm9wLkdldENvbm5lY3Rpb25zUmVxdWVzdBofLmlu",
            "dGVyb3AuR2V0Q29ubmVjdGlvbnNSZXNwb25zZRJWChRHZXRDb25uZWN0aW9u",
            "c1N0cmVhbRIeLmludGVyb3AuR2V0Q29ubmVjdGlvbnNSZXF1ZXN0GhwuaW50",
            "ZXJvcC5HZXRDb25uZWN0aW9uc0V2ZW50MAEaH5LbBBtpbnRlcm9wLkFwcExp",
            "ZmVjeWNsZVNlcnZpY2VCIaoCHlBsZXh1cy5Ib3N0LkludGVybmFsLkdlbmVy",
            "YXRlZGIGcHJvdG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Plexus.Host.Internal.Generated.UniqueIdReflection.Descriptor, global::Plexus.Host.Internal.Generated.AppLaunchModeReflection.Descriptor, global::Plexus.Host.Internal.Generated.AppConnectionDescriptorReflection.Descriptor, global::Plexus.Host.Internal.Generated.InvocationDescriptorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Plexus.Host.Internal.Generated.OptionsReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Plexus.Host.Internal.Generated.InvocationResult), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.ResolveAppRequest), global::Plexus.Host.Internal.Generated.ResolveAppRequest.Parser, new[]{ "AppId", "AppResolveMode" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.ResolveAppResponse), global::Plexus.Host.Internal.Generated.ResolveAppResponse.Parser, new[]{ "AppInstanceId", "AppConnectionId", "IsNewInstanceLaunched" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppLifecycleEvent), global::Plexus.Host.Internal.Generated.AppLifecycleEvent.Parser, new[]{ "Connected", "Disconnected", "Error" }, new[]{ "Event" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.InvocationEvent), global::Plexus.Host.Internal.Generated.InvocationEvent.Parser, new[]{ "InvocationStarted", "InvocationFinished" }, new[]{ "Event" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppConnectedEvent), global::Plexus.Host.Internal.Generated.AppConnectedEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppDisconnectedEvent), global::Plexus.Host.Internal.Generated.AppDisconnectedEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent), global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent.Parser, new[]{ "ConnectionDescriptor" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.InvocationStartedEvent), global::Plexus.Host.Internal.Generated.InvocationStartedEvent.Parser, new[]{ "InvocationDescriptor" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.InvocationFinishedEvent), global::Plexus.Host.Internal.Generated.InvocationFinishedEvent.Parser, new[]{ "InvocationDescriptor", "Result", "DurationMs" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.GetConnectionsRequest), global::Plexus.Host.Internal.Generated.GetConnectionsRequest.Parser, new[]{ "ApplicationId", "AppInstanceId", "ConnectionId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.GetConnectionsResponse), global::Plexus.Host.Internal.Generated.GetConnectionsResponse.Parser, new[]{ "Connections" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Plexus.Host.Internal.Generated.GetConnectionsEvent), global::Plexus.Host.Internal.Generated.GetConnectionsEvent.Parser, new[]{ "Connections", "NewConnection", "ClosedConnection" }, new[]{ "Event" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  internal enum InvocationResult {
    [pbr::OriginalName("Succeeded")] Succeeded = 0,
    [pbr::OriginalName("Canceled")] Canceled = 1,
    [pbr::OriginalName("Failed")] Failed = 2,
  }

  #endregion

  #region Messages
  internal sealed partial class ResolveAppRequest : pb::IMessage<ResolveAppRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ResolveAppRequest> _parser = new pb::MessageParser<ResolveAppRequest>(() => new ResolveAppRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ResolveAppRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResolveAppRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResolveAppRequest(ResolveAppRequest other) : this() {
      appId_ = other.appId_;
      appResolveMode_ = other.appResolveMode_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResolveAppRequest Clone() {
      return new ResolveAppRequest(this);
    }

    /// <summary>Field number for the "app_id" field.</summary>
    public const int AppIdFieldNumber = 1;
    private string appId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AppId {
      get { return appId_; }
      set {
        appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "app_resolve_mode" field.</summary>
    public const int AppResolveModeFieldNumber = 2;
    private global::Plexus.Host.Internal.Generated.AppLaunchMode appResolveMode_ = global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.AppLaunchMode AppResolveMode {
      get { return appResolveMode_; }
      set {
        appResolveMode_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ResolveAppRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ResolveAppRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AppId != other.AppId) return false;
      if (AppResolveMode != other.AppResolveMode) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (AppId.Length != 0) hash ^= AppId.GetHashCode();
      if (AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) hash ^= AppResolveMode.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (AppId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AppId);
      }
      if (AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) {
        output.WriteRawTag(16);
        output.WriteEnum((int) AppResolveMode);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (AppId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AppId);
      }
      if (AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) {
        output.WriteRawTag(16);
        output.WriteEnum((int) AppResolveMode);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (AppId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId);
      }
      if (AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AppResolveMode);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ResolveAppRequest other) {
      if (other == null) {
        return;
      }
      if (other.AppId.Length != 0) {
        AppId = other.AppId;
      }
      if (other.AppResolveMode != global::Plexus.Host.Internal.Generated.AppLaunchMode.SingleInstance) {
        AppResolveMode = other.AppResolveMode;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            AppId = input.ReadString();
            break;
          }
          case 16: {
            AppResolveMode = (global::Plexus.Host.Internal.Generated.AppLaunchMode) input.ReadEnum();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            AppId = input.ReadString();
            break;
          }
          case 16: {
            AppResolveMode = (global::Plexus.Host.Internal.Generated.AppLaunchMode) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

  internal sealed partial class ResolveAppResponse : pb::IMessage<ResolveAppResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ResolveAppResponse> _parser = new pb::MessageParser<ResolveAppResponse>(() => new ResolveAppResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ResolveAppResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResolveAppResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResolveAppResponse(ResolveAppResponse other) : this() {
      appInstanceId_ = other.appInstanceId_ != null ? other.appInstanceId_.Clone() : null;
      appConnectionId_ = other.appConnectionId_ != null ? other.appConnectionId_.Clone() : null;
      isNewInstanceLaunched_ = other.isNewInstanceLaunched_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResolveAppResponse Clone() {
      return new ResolveAppResponse(this);
    }

    /// <summary>Field number for the "app_instance_id" field.</summary>
    public const int AppInstanceIdFieldNumber = 1;
    private global::Plexus.Host.Internal.Generated.UniqueId appInstanceId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.UniqueId AppInstanceId {
      get { return appInstanceId_; }
      set {
        appInstanceId_ = value;
      }
    }

    /// <summary>Field number for the "app_connection_id" field.</summary>
    public const int AppConnectionIdFieldNumber = 2;
    private global::Plexus.Host.Internal.Generated.UniqueId appConnectionId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.UniqueId AppConnectionId {
      get { return appConnectionId_; }
      set {
        appConnectionId_ = value;
      }
    }

    /// <summary>Field number for the "is_new_instance_launched" field.</summary>
    public const int IsNewInstanceLaunchedFieldNumber = 3;
    private bool isNewInstanceLaunched_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsNewInstanceLaunched {
      get { return isNewInstanceLaunched_; }
      set {
        isNewInstanceLaunched_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ResolveAppResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ResolveAppResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AppInstanceId, other.AppInstanceId)) return false;
      if (!object.Equals(AppConnectionId, other.AppConnectionId)) return false;
      if (IsNewInstanceLaunched != other.IsNewInstanceLaunched) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (appInstanceId_ != null) hash ^= AppInstanceId.GetHashCode();
      if (appConnectionId_ != null) hash ^= AppConnectionId.GetHashCode();
      if (IsNewInstanceLaunched != false) hash ^= IsNewInstanceLaunched.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (appInstanceId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AppInstanceId);
      }
      if (appConnectionId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AppConnectionId);
      }
      if (IsNewInstanceLaunched != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsNewInstanceLaunched);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (appInstanceId_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AppInstanceId);
      }
      if (appConnectionId_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(AppConnectionId);
      }
      if (IsNewInstanceLaunched != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsNewInstanceLaunched);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (appInstanceId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppInstanceId);
      }
      if (appConnectionId_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppConnectionId);
      }
      if (IsNewInstanceLaunched != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ResolveAppResponse other) {
      if (other == null) {
        return;
      }
      if (other.appInstanceId_ != null) {
        if (appInstanceId_ == null) {
          AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId();
        }
        AppInstanceId.MergeFrom(other.AppInstanceId);
      }
      if (other.appConnectionId_ != null) {
        if (appConnectionId_ == null) {
          AppConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId();
        }
        AppConnectionId.MergeFrom(other.AppConnectionId);
      }
      if (other.IsNewInstanceLaunched != false) {
        IsNewInstanceLaunched = other.IsNewInstanceLaunched;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (appInstanceId_ == null) {
              AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId();
            }
            input.ReadMessage(AppInstanceId);
            break;
          }
          case 18: {
            if (appConnectionId_ == null) {
              AppConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId();
            }
            input.ReadMessage(AppConnectionId);
            break;
          }
          case 24: {
            IsNewInstanceLaunched = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (appInstanceId_ == null) {
              AppInstanceId = new global::Plexus.Host.Internal.Generated.UniqueId();
            }
            input.ReadMessage(AppInstanceId);
            break;
          }
          case 18: {
            if (appConnectionId_ == null) {
              AppConnectionId = new global::Plexus.Host.Internal.Generated.UniqueId();
            }
            input.ReadMessage(AppConnectionId);
            break;
          }
          case 24: {
            IsNewInstanceLaunched = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  internal sealed partial class AppLifecycleEvent : pb::IMessage<AppLifecycleEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AppLifecycleEvent> _parser = new pb::MessageParser<AppLifecycleEvent>(() => new AppLifecycleEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AppLifecycleEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppLifecycleEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppLifecycleEvent(AppLifecycleEvent other) : this() {
      switch (other.EventCase) {
        case EventOneofCase.Connected:
          Connected = other.Connected.Clone();
          break;
        case EventOneofCase.Disconnected:
          Disconnected = other.Disconnected.Clone();
          break;
        case EventOneofCase.Error:
          Error = other.Error.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppLifecycleEvent Clone() {
      return new AppLifecycleEvent(this);
    }

    /// <summary>Field number for the "connected" field.</summary>
    public const int ConnectedFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.AppConnectedEvent Connected {
      get { return eventCase_ == EventOneofCase.Connected ? (global::Plexus.Host.Internal.Generated.AppConnectedEvent) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Connected;
      }
    }

    /// <summary>Field number for the "disconnected" field.</summary>
    public const int DisconnectedFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.AppDisconnectedEvent Disconnected {
      get { return eventCase_ == EventOneofCase.Disconnected ? (global::Plexus.Host.Internal.Generated.AppDisconnectedEvent) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Disconnected;
      }
    }

    /// <summary>Field number for the "error" field.</summary>
    public const int ErrorFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent Error {
      get { return eventCase_ == EventOneofCase.Error ? (global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.Error;
      }
    }

    private object event_;
    /// <summary>Enum of possible cases for the "event" oneof.</summary>
    public enum EventOneofCase {
      None = 0,
      Connected = 1,
      Disconnected = 2,
      Error = 3,
    }
    private EventOneofCase eventCase_ = EventOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public EventOneofCase EventCase {
      get { return eventCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEvent() {
      eventCase_ = EventOneofCase.None;
      event_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AppLifecycleEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AppLifecycleEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Connected, other.Connected)) return false;
      if (!object.Equals(Disconnected, other.Disconnected)) return false;
      if (!object.Equals(Error, other.Error)) return false;
      if (EventCase != other.EventCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (eventCase_ == EventOneofCase.Connected) hash ^= Connected.GetHashCode();
      if (eventCase_ == EventOneofCase.Disconnected) hash ^= Disconnected.GetHashCode();
      if (eventCase_ == EventOneofCase.Error) hash ^= Error.GetHashCode();
      hash ^= (int) eventCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (eventCase_ == EventOneofCase.Connected) {
        output.WriteRawTag(10);
        output.WriteMessage(Connected);
      }
      if (eventCase_ == EventOneofCase.Disconnected) {
        output.WriteRawTag(18);
        output.WriteMessage(Disconnected);
      }
      if (eventCase_ == EventOneofCase.Error) {
        output.WriteRawTag(26);
        output.WriteMessage(Error);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (eventCase_ == EventOneofCase.Connected) {
        output.WriteRawTag(10);
        output.WriteMessage(Connected);
      }
      if (eventCase_ == EventOneofCase.Disconnected) {
        output.WriteRawTag(18);
        output.WriteMessage(Disconnected);
      }
      if (eventCase_ == EventOneofCase.Error) {
        output.WriteRawTag(26);
        output.WriteMessage(Error);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (eventCase_ == EventOneofCase.Connected) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Connected);
      }
      if (eventCase_ == EventOneofCase.Disconnected) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Disconnected);
      }
      if (eventCase_ == EventOneofCase.Error) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Error);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AppLifecycleEvent other) {
      if (other == null) {
        return;
      }
      switch (other.EventCase) {
        case EventOneofCase.Connected:
          if (Connected == null) {
            Connected = new global::Plexus.Host.Internal.Generated.AppConnectedEvent();
          }
          Connected.MergeFrom(other.Connected);
          break;
        case EventOneofCase.Disconnected:
          if (Disconnected == null) {
            Disconnected = new global::Plexus.Host.Internal.Generated.AppDisconnectedEvent();
          }
          Disconnected.MergeFrom(other.Disconnected);
          break;
        case EventOneofCase.Error:
          if (Error == null) {
            Error = new global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent();
          }
          Error.MergeFrom(other.Error);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Plexus.Host.Internal.Generated.AppConnectedEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectedEvent();
            if (eventCase_ == EventOneofCase.Connected) {
              subBuilder.MergeFrom(Connected);
            }
            input.ReadMessage(subBuilder);
            Connected = subBuilder;
            break;
          }
          case 18: {
            global::Plexus.Host.Internal.Generated.AppDisconnectedEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppDisconnectedEvent();
            if (eventCase_ == EventOneofCase.Disconnected) {
              subBuilder.MergeFrom(Disconnected);
            }
            input.ReadMessage(subBuilder);
            Disconnected = subBuilder;
            break;
          }
          case 26: {
            global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent();
            if (eventCase_ == EventOneofCase.Error) {
              subBuilder.MergeFrom(Error);
            }
            input.ReadMessage(subBuilder);
            Error = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Plexus.Host.Internal.Generated.AppConnectedEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectedEvent();
            if (eventCase_ == EventOneofCase.Connected) {
              subBuilder.MergeFrom(Connected);
            }
            input.ReadMessage(subBuilder);
            Connected = subBuilder;
            break;
          }
          case 18: {
            global::Plexus.Host.Internal.Generated.AppDisconnectedEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppDisconnectedEvent();
            if (eventCase_ == EventOneofCase.Disconnected) {
              subBuilder.MergeFrom(Disconnected);
            }
            input.ReadMessage(subBuilder);
            Disconnected = subBuilder;
            break;
          }
          case 26: {
            global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent subBuilder = new global::Plexus.Host.Internal.Generated.AppConnectionErrorEvent();
            if (eventCase_ == EventOneofCase.Error) {
              subBuilder.MergeFrom(Error);
            }
            input.ReadMessage(subBuilder);
            Error = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  internal sealed partial class InvocationEvent : pb::IMessage<InvocationEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<InvocationEvent> _parser = new pb::MessageParser<InvocationEvent>(() => new InvocationEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<InvocationEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InvocationEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InvocationEvent(InvocationEvent other) : this() {
      switch (other.EventCase) {
        case EventOneofCase.InvocationStarted:
          InvocationStarted = other.InvocationStarted.Clone();
          break;
        case EventOneofCase.InvocationFinished:
          InvocationFinished = other.InvocationFinished.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InvocationEvent Clone() {
      return new InvocationEvent(this);
    }

    /// <summary>Field number for the "invocation_started" field.</summary>
    public const int InvocationStartedFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.InvocationStartedEvent InvocationStarted {
      get { return eventCase_ == EventOneofCase.InvocationStarted ? (global::Plexus.Host.Internal.Generated.InvocationStartedEvent) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.InvocationStarted;
      }
    }

    /// <summary>Field number for the "invocation_finished" field.</summary>
    public const int InvocationFinishedFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.InvocationFinishedEvent InvocationFinished {
      get { return eventCase_ == EventOneofCase.InvocationFinished ? (global::Plexus.Host.Internal.Generated.InvocationFinishedEvent) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.InvocationFinished;
      }
    }

    private object event_;
    /// <summary>Enum of possible cases for the "event" oneof.</summary>
    public enum EventOneofCase {
      None = 0,
      InvocationStarted = 1,
      InvocationFinished = 2,
    }
    private EventOneofCase eventCase_ = EventOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public EventOneofCase EventCase {
      get { return eventCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEvent() {
      eventCase_ = EventOneofCase.None;
      event_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as InvocationEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(InvocationEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(InvocationStarted, other.InvocationStarted)) return false;
      if (!object.Equals(InvocationFinished, other.InvocationFinished)) return false;
      if (EventCase != other.EventCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (eventCase_ == EventOneofCase.InvocationStarted) hash ^= InvocationStarted.GetHashCode();
      if (eventCase_ == EventOneofCase.InvocationFinished) hash ^= InvocationFinished.GetHashCode();
      hash ^= (int) eventCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (eventCase_ == EventOneofCase.InvocationStarted) {
        output.WriteRawTag(10);
        output.WriteMessage(InvocationStarted);
      }
      if (eventCase_ == EventOneofCase.InvocationFinished) {
        output.WriteRawTag(18);
        output.WriteMessage(InvocationFinished);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (eventCase_ == EventOneofCase.InvocationStarted) {
        output.WriteRawTag(10);
        output.WriteMessage(InvocationStarted);
      }
      if (eventCase_ == EventOneofCase.InvocationFinished) {
        output.WriteRawTag(18);
        output.WriteMessage(InvocationFinished);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (eventCase_ == EventOneofCase.InvocationStarted) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationStarted);
      }
      if (eventCase_ == EventOneofCase.InvocationFinished) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationFinished);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(InvocationEvent other) {
      if (other == null) {
        return;
      }
      switch (other.EventCase) {
        case EventOneofCase.InvocationStarted:
          if (InvocationStarted == null) {
            InvocationStarted = new global::Plexus.Host.Internal.Generated.InvocationStartedEvent();
          }
          InvocationStarted.MergeFrom(other.InvocationStarted);
          break;
        case EventOneofCase.InvocationFinished:
          if (InvocationFinished == null) {
            InvocationFinished = new global::Plexus.Host.Internal.Generated.InvocationFinishedEvent();
          }
          InvocationFinished.MergeFrom(other.InvocationFinished);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Plexus.Host.Internal.Generated.InvocationStartedEvent subBuilder = new global::Plexus.Host.Internal.Generated.InvocationStartedEvent();
            if (eventCase_ == EventOneofCase.InvocationStarted) {
              subBuilder.MergeFrom(InvocationStarted);
            }
            input.ReadMessage(subBuilder);
            InvocationStarted = subBuilder;
            break;
          }
          case 18: {
            global::Plexus.Host.Internal.Generated.InvocationFinishedEvent subBuilder = new global::Plexus.Host.Internal.Generated.InvocationFinishedEvent();
            if (eventCase_ == EventOneofCase.InvocationFinished) {
              subBuilder.MergeFrom(InvocationFinished);
            }
            input.ReadMessage(subBuilder);
            InvocationFinished = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::Plexus.Host.Internal.Generated.InvocationStartedEvent subBuilder = new global::Plexus.Host.Internal.Generated.InvocationStartedEvent();
            if (eventCase_ == EventOneofCase.InvocationStarted) {
              subBuilder.MergeFrom(InvocationStarted);
            }
            input.ReadMessage(subBuilder);
            InvocationStarted = subBuilder;
            break;
          }
          case 18: {
            global::Plexus.Host.Internal.Generated.InvocationFinishedEvent subBuilder = new global::Plexus.Host.Internal.Generated.InvocationFinishedEvent();
            if (eventCase_ == EventOneofCase.InvocationFinished) {
              subBuilder.MergeFrom(InvocationFinished);
            }
            input.ReadMessage(subBuilder);
            InvocationFinished = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  internal sealed partial class AppConnectedEvent : pb::IMessage<AppConnectedEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AppConnectedEvent> _parser = new pb::MessageParser<AppConnectedEvent>(() => new AppConnectedEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AppConnectedEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectedEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectedEvent(AppConnectedEvent other) : this() {
      connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectedEvent Clone() {
      return new AppConnectedEvent(this);
    }

    /// <summary>Field number for the "connection_descriptor" field.</summary>
    public const int ConnectionDescriptorFieldNumber = 1;
    private global::Plexus.Host.Internal.Generated.AppConnectionDescriptor connectionDescriptor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor {
      get { return connectionDescriptor_; }
      set {
        connectionDescriptor_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AppConnectedEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AppConnectedEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (connectionDescriptor_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (connectionDescriptor_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (connectionDescriptor_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AppConnectedEvent other) {
      if (other == null) {
        return;
      }
      if (other.connectionDescriptor_ != null) {
        if (connectionDescriptor_ == null) {
          ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
        }
        ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (connectionDescriptor_ == null) {
              ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
            }
            input.ReadMessage(ConnectionDescriptor);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (connectionDescriptor_ == null) {
              ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
            }
            input.ReadMessage(ConnectionDescriptor);
            break;
          }
        }
      }
    }
    #endif

  }

  internal sealed partial class AppDisconnectedEvent : pb::IMessage<AppDisconnectedEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AppDisconnectedEvent> _parser = new pb::MessageParser<AppDisconnectedEvent>(() => new AppDisconnectedEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AppDisconnectedEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppDisconnectedEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppDisconnectedEvent(AppDisconnectedEvent other) : this() {
      connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppDisconnectedEvent Clone() {
      return new AppDisconnectedEvent(this);
    }

    /// <summary>Field number for the "connection_descriptor" field.</summary>
    public const int ConnectionDescriptorFieldNumber = 1;
    private global::Plexus.Host.Internal.Generated.AppConnectionDescriptor connectionDescriptor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor {
      get { return connectionDescriptor_; }
      set {
        connectionDescriptor_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AppDisconnectedEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AppDisconnectedEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (connectionDescriptor_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (connectionDescriptor_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (connectionDescriptor_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AppDisconnectedEvent other) {
      if (other == null) {
        return;
      }
      if (other.connectionDescriptor_ != null) {
        if (connectionDescriptor_ == null) {
          ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
        }
        ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (connectionDescriptor_ == null) {
              ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
            }
            input.ReadMessage(ConnectionDescriptor);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (connectionDescriptor_ == null) {
              ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
            }
            input.ReadMessage(ConnectionDescriptor);
            break;
          }
        }
      }
    }
    #endif

  }

  internal sealed partial class AppConnectionErrorEvent : pb::IMessage<AppConnectionErrorEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AppConnectionErrorEvent> _parser = new pb::MessageParser<AppConnectionErrorEvent>(() => new AppConnectionErrorEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AppConnectionErrorEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectionErrorEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectionErrorEvent(AppConnectionErrorEvent other) : this() {
      connectionDescriptor_ = other.connectionDescriptor_ != null ? other.connectionDescriptor_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AppConnectionErrorEvent Clone() {
      return new AppConnectionErrorEvent(this);
    }

    /// <summary>Field number for the "connection_descriptor" field.</summary>
    public const int ConnectionDescriptorFieldNumber = 1;
    private global::Plexus.Host.Internal.Generated.AppConnectionDescriptor connectionDescriptor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.AppConnectionDescriptor ConnectionDescriptor {
      get { return connectionDescriptor_; }
      set {
        connectionDescriptor_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AppConnectionErrorEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AppConnectionErrorEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ConnectionDescriptor, other.ConnectionDescriptor)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (connectionDescriptor_ != null) hash ^= ConnectionDescriptor.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (connectionDescriptor_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (connectionDescriptor_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (connectionDescriptor_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ConnectionDescriptor);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AppConnectionErrorEvent other) {
      if (other == null) {
        return;
      }
      if (other.connectionDescriptor_ != null) {
        if (connectionDescriptor_ == null) {
          ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
        }
        ConnectionDescriptor.MergeFrom(other.ConnectionDescriptor);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (connectionDescriptor_ == null) {
              ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
            }
            input.ReadMessage(ConnectionDescriptor);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (connectionDescriptor_ == null) {
              ConnectionDescriptor = new global::Plexus.Host.Internal.Generated.AppConnectionDescriptor();
            }
            input.ReadMessage(ConnectionDescriptor);
            break;
          }
        }
      }
    }
    #endif

  }

  internal sealed partial class InvocationStartedEvent : pb::IMessage<InvocationStartedEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<InvocationStartedEvent> _parser = new pb::MessageParser<InvocationStartedEvent>(() => new InvocationStartedEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<InvocationStartedEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Plexus.Host.Internal.Generated.AppLifecycleServiceReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InvocationStartedEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InvocationStartedEvent(InvocationStartedEvent other) : this() {
      invocationDescriptor_ = other.invocationDescriptor_ != null ? other.invocationDescriptor_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InvocationStartedEvent Clone() {
      return new InvocationStartedEvent(this);
    }

    /// <summary>Field number for the "invocation_descriptor" field.</summary>
    public const int InvocationDescriptorFieldNumber = 1;
    private global::Plexus.Host.Internal.Generated.InvocationDescriptor invocationDescriptor_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Plexus.Host.Internal.Generated.InvocationDescriptor InvocationDescriptor {
      get { return invocationDescriptor_; }
      set {
        invocationDescriptor_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as InvocationStartedEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(InvocationStartedEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(InvocationDescriptor, other.InvocationDescriptor)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (invocationDescriptor_ != null) hash ^= InvocationDescriptor.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (invocationDescriptor_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(InvocationDescriptor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (invocationDescriptor_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(InvocationDescriptor);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (invocationDescriptor_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InvocationDescriptor);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(InvocationStartedEvent other) {
      if (other == null) {
        return;
      }
      if (other.invocationDescriptor_ != null) {
        if (invocationDescriptor_ == null) {
          InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor();
        }
        InvocationDescriptor.MergeFrom(other.InvocationDescriptor);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (invocationDescriptor_ == null) {
              InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor();
            }
            input.ReadMessage(InvocationDescriptor);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (invocationDescriptor_ == null) {
              InvocationDescriptor = new global::Plexus.Host.Internal.Generated.InvocationDescriptor();
            }
            input.ReadMessage(InvocationDescriptor);
        
Download .txt
gitextract_vkfrubuv/

├── .github/
│   └── CONTRIBUTING.md
├── .gitignore
├── .whitesource
├── FILE_HEADER
├── LICENSE
├── NOTICE
├── README.md
├── add-file-headers.bat
├── build.bat
├── build.gradle
├── desktop/
│   ├── .gitignore
│   ├── .nuget-local-packages/
│   │   └── README.txt
│   ├── NuGet.Config
│   ├── README.txt
│   ├── build.cmd
│   ├── build.gradle
│   ├── coverage-broker.cmd
│   ├── coverage-client.cmd
│   ├── coverage.cmd
│   ├── dotnet.cmd
│   ├── global.json
│   ├── push.cmd
│   ├── src/
│   │   ├── Common.csproj
│   │   ├── Plexus.Channels/
│   │   │   ├── ChannelExtensions.cs
│   │   │   └── Plexus.Channels.csproj
│   │   ├── Plexus.Common.Contracts/
│   │   │   ├── AppConnectionDescriptor.cs
│   │   │   ├── BrokerFeatures.cs
│   │   │   ├── Channels/
│   │   │   │   ├── ChannelWriteTimeoutException.cs
│   │   │   │   ├── IChannel.cs
│   │   │   │   ├── IReadableChannel.cs
│   │   │   │   ├── ITerminatableWritableChannel.cs
│   │   │   │   └── IWritableChannel.cs
│   │   │   ├── EnvironmentHelper.cs
│   │   │   ├── Maybe.cs
│   │   │   ├── Nothing.cs
│   │   │   ├── Plexus.Common.Contracts.csproj
│   │   │   ├── Pools/
│   │   │   │   ├── IPooledBuffer.cs
│   │   │   │   └── IPooledObject.cs
│   │   │   ├── TransportType.cs
│   │   │   └── UniqueId.cs
│   │   ├── Plexus.Host/
│   │   │   ├── Generate.cmd
│   │   │   ├── Internal/
│   │   │   │   ├── BrokerCliOptions.cs
│   │   │   │   ├── BrokerProgram.cs
│   │   │   │   ├── Generated/
│   │   │   │   │   └── interop/
│   │   │   │   │       ├── AppConnectionDescriptor.msg.g.cs
│   │   │   │   │       ├── AppLaunchMode.msg.g.cs
│   │   │   │   │       ├── AppLifecycleService.msg.g.cs
│   │   │   │   │       ├── AppLifecycleService.svc.g.cs
│   │   │   │   │       ├── CommandLineTool.app.g.cs
│   │   │   │   │       ├── InvocationDescriptor.msg.g.cs
│   │   │   │   │       ├── Options.msg.g.cs
│   │   │   │   │       └── UniqueId.msg.g.cs
│   │   │   │   ├── IProgram.cs
│   │   │   │   ├── InstanceAwareness.cs
│   │   │   │   ├── InteropCliProgram.cs
│   │   │   │   ├── LaunchCliOptions.cs
│   │   │   │   ├── LockFile.cs
│   │   │   │   ├── ProgramLoader.cs
│   │   │   │   ├── StopCliOptions.cs
│   │   │   │   ├── StudioCliOptions.cs
│   │   │   │   └── VerbOptions.cs
│   │   │   ├── Plexus.Host.csproj
│   │   │   ├── Plexus.Interop.Broker.Redist.nuspec
│   │   │   ├── Plexus.Interop.Broker.Redist.targets
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   └── nlog.config
│   │   ├── Plexus.Interop.Apps.Manager/
│   │   │   ├── Generate.cmd
│   │   │   ├── IAppLaunchedEventConsumer.cs
│   │   │   ├── Internal/
│   │   │   │   ├── AppConnection.cs
│   │   │   │   ├── AppDto.cs
│   │   │   │   ├── AppInfo.cs
│   │   │   │   ├── AppLaunchedEventProvider.cs
│   │   │   │   ├── AppLaunchedEventSubscriber.cs
│   │   │   │   ├── AppLifecycleManager.cs
│   │   │   │   ├── AppLifecycleManagerClientClientRepository.cs
│   │   │   │   ├── AppRegistry.cs
│   │   │   │   ├── AppsDto.cs
│   │   │   │   ├── Generated/
│   │   │   │   │   └── interop/
│   │   │   │   │       ├── AppConnectionDescriptor.msg.g.cs
│   │   │   │   │       ├── AppLaunchMode.msg.g.cs
│   │   │   │   │       ├── AppLauncherService.msg.g.cs
│   │   │   │   │       ├── AppLauncherService.svc.g.cs
│   │   │   │   │       ├── AppLifecycleManager.app.g.cs
│   │   │   │   │       ├── AppLifecycleService.msg.g.cs
│   │   │   │   │       ├── AppLifecycleService.svc.g.cs
│   │   │   │   │       ├── AppMetadataService.msg.g.cs
│   │   │   │   │       ├── AppMetadataService.svc.g.cs
│   │   │   │   │       ├── AppRegistrationService.msg.g.cs
│   │   │   │   │       ├── AppRegistrationService.svc.g.cs
│   │   │   │   │       ├── ContextLinkage.msg.g.cs
│   │   │   │   │       ├── ContextLinkage.svc.g.cs
│   │   │   │   │       ├── InvocationDescriptor.msg.g.cs
│   │   │   │   │       ├── NativeAppLauncher.app.g.cs
│   │   │   │   │       ├── Options.msg.g.cs
│   │   │   │   │       └── UniqueId.msg.g.cs
│   │   │   │   ├── IAppLaunchedEventProvider.cs
│   │   │   │   ├── IAppLifecycleManagerClientClientRepository.cs
│   │   │   │   ├── IAppRegistryProvider.cs
│   │   │   │   ├── InteropContext.cs
│   │   │   │   ├── InteropContextFactory.cs
│   │   │   │   ├── JsonFileAppRegistryProvider.cs
│   │   │   │   ├── NativeAppLauncherClient.cs
│   │   │   │   ├── NativeAppLauncherParamsDto.cs
│   │   │   │   ├── ObservableExtensions.cs
│   │   │   │   ├── ProtobufHelper.cs
│   │   │   │   ├── Services/
│   │   │   │   │   ├── AppLifecycleServiceImpl.cs
│   │   │   │   │   ├── AppMetadataServiceImpl.cs
│   │   │   │   │   ├── AppRegistrationServiceImpl.cs
│   │   │   │   │   ├── ContextLinkage/
│   │   │   │   │   │   ├── AppConnectionsSet.cs
│   │   │   │   │   │   ├── AppContextBindingEvent.cs
│   │   │   │   │   │   ├── Context.cs
│   │   │   │   │   │   └── ContextsSet.cs
│   │   │   │   │   ├── ContextLinkageServiceImpl.cs
│   │   │   │   │   ├── IAppLifecycleService.cs
│   │   │   │   │   └── IAppMetadataService.cs
│   │   │   │   └── SubProcessLauncher.cs
│   │   │   └── Plexus.Interop.Apps.Manager.csproj
│   │   ├── Plexus.Interop.Apps.Manager.Contracts/
│   │   │   ├── AppConnectionEvent.cs
│   │   │   ├── ConnectionEventType.cs
│   │   │   ├── IAppConnectedEventProvider.cs
│   │   │   ├── IAppConnection.cs
│   │   │   ├── IAppLifecycleManager.cs
│   │   │   ├── IContextLinkageManager.cs
│   │   │   ├── IInteropContext.cs
│   │   │   ├── IInvocationEventProvider.cs
│   │   │   ├── InvocationDescriptor.cs
│   │   │   ├── InvocationFinishedEventDescriptor.cs
│   │   │   ├── InvocationResult.cs
│   │   │   ├── InvocationStartedEventDescriptor.cs
│   │   │   ├── Plexus.Interop.Apps.Manager.Contracts.csproj
│   │   │   ├── ResolveMode.cs
│   │   │   └── ResolvedConnection.cs
│   │   ├── Plexus.Interop.Broker/
│   │   │   ├── BrokerFactory.cs
│   │   │   ├── BrokerIsAlreadyRunningException.cs
│   │   │   ├── BrokerOptions.cs
│   │   │   ├── IBroker.cs
│   │   │   ├── Internal/
│   │   │   │   ├── Broker.cs
│   │   │   │   └── ServerConnectionListener.cs
│   │   │   └── Plexus.Interop.Broker.csproj
│   │   ├── Plexus.Interop.Broker.Core/
│   │   │   ├── BrokerException.cs
│   │   │   ├── BrokerProcessorFactory.cs
│   │   │   ├── Generate.cmd
│   │   │   ├── IBrokerProcessor.cs
│   │   │   ├── Internal/
│   │   │   │   ├── AppConnectionProcessor.cs
│   │   │   │   ├── AuthenticationHandler.cs
│   │   │   │   ├── BrokerProcessor.cs
│   │   │   │   ├── BrokerRegistryProvider.cs
│   │   │   │   ├── ClientRequestHandler.cs
│   │   │   │   ├── DiscoveryRequestHandler.cs
│   │   │   │   ├── IAppConnectionProcessor.cs
│   │   │   │   ├── IAuthenticationHandler.cs
│   │   │   │   ├── IClientRequestHandler.cs
│   │   │   │   ├── IDiscoveryRequestHandler.cs
│   │   │   │   ├── IInvocationRequestHandler.cs
│   │   │   │   ├── IRegistryService.cs
│   │   │   │   ├── InvocationRequestHandler.cs
│   │   │   │   ├── RegistryService.cs
│   │   │   │   └── interop.json
│   │   │   ├── Plexus.Interop.Broker.Core.csproj
│   │   │   └── Properties/
│   │   │       └── AsseblyInfo.cs
│   │   ├── Plexus.Interop.Broker.Core.Tests/
│   │   │   ├── Plexus.Interop.Broker.Core.Tests.csproj
│   │   │   ├── RegistryServiceTests.cs
│   │   │   └── RegistryServiceTests.interop.json
│   │   ├── Plexus.Interop.Client/
│   │   │   ├── ClientBase.cs
│   │   │   ├── ClientOptionsBuilderExtensions.cs
│   │   │   └── Plexus.Interop.Client.csproj
│   │   ├── Plexus.Interop.Client.Core/
│   │   │   ├── ClientDiscoveryInvokerExtensions.cs
│   │   │   ├── ClientFactory.cs
│   │   │   ├── ClientOptions.cs
│   │   │   ├── ClientOptionsBuilder.cs
│   │   │   ├── ContextLinkageOptions.cs
│   │   │   ├── DiscoveredMethod.cs
│   │   │   ├── DiscoveredService.cs
│   │   │   ├── IClient.cs
│   │   │   ├── IClientCallInvoker.cs
│   │   │   ├── IClientDiscoveryInvoker.cs
│   │   │   ├── IClientFactory.cs
│   │   │   ├── IClientStreamingMethodCall.cs
│   │   │   ├── IDuplexStreamingMethodCall.cs
│   │   │   ├── IMethod.cs
│   │   │   ├── IMethodCall.cs
│   │   │   ├── IServerStreamingMethodCall.cs
│   │   │   ├── IUnaryMethodCall.cs
│   │   │   ├── IUnaryMethodCall~1.cs
│   │   │   ├── Internal/
│   │   │   │   ├── Calls/
│   │   │   │   │   ├── ClientStreamingMethodCall.cs
│   │   │   │   │   ├── ClientStreamingMethodCallHandler.cs
│   │   │   │   │   ├── DuplexStreamingMethodCall.cs
│   │   │   │   │   ├── DuplexStreamingMethodCallHandler.cs
│   │   │   │   │   ├── MethodCallHandlerBase.cs
│   │   │   │   │   ├── ServerStreamingMethodCall.cs
│   │   │   │   │   ├── ServerStreamingMethodCallHandler.cs
│   │   │   │   │   ├── UnaryMethodCall.cs
│   │   │   │   │   └── UnaryMethodCallHandler.cs
│   │   │   │   ├── Client.cs
│   │   │   │   ├── ClientConnection.cs
│   │   │   │   ├── ClientConnectionFactory.cs
│   │   │   │   ├── ClientProtocol/
│   │   │   │   │   ├── Discovery/
│   │   │   │   │   │   ├── DiscoveryService.cs
│   │   │   │   │   │   └── IDiscoveryService.cs
│   │   │   │   │   └── Invocations/
│   │   │   │   │       ├── IIncomingInvocation.cs
│   │   │   │   │       ├── IIncomingInvocationFactory.cs
│   │   │   │   │       ├── IInvocation.cs
│   │   │   │   │       ├── IOutcomingInvocation.cs
│   │   │   │   │       ├── IOutcomingInvocationFactory.cs
│   │   │   │   │       ├── IncomingInvocation.cs
│   │   │   │   │       ├── IncomingInvocationDescriptor.cs
│   │   │   │   │       ├── IncomingInvocationFactory.cs
│   │   │   │   │       ├── IncomingStreamState.cs
│   │   │   │   │       ├── Invocation.cs
│   │   │   │   │       ├── InvocationMethodDescriptor.cs
│   │   │   │   │       ├── InvocationReceiveProcessor.cs
│   │   │   │   │       ├── InvocationSendProcessor.cs
│   │   │   │   │       ├── InvocationState.cs
│   │   │   │   │       ├── InvocationTargetDescriptor.cs
│   │   │   │   │       ├── OutcomingInvocation.cs
│   │   │   │   │       ├── OutcomingInvocationDescriptor.cs
│   │   │   │   │       └── OutcomingInvocationFactory.cs
│   │   │   │   ├── DiscoveredMethodInfo.cs
│   │   │   │   ├── IClientConnection.cs
│   │   │   │   ├── IMethodCallHandler.cs
│   │   │   │   └── MethodCallHandlers.cs
│   │   │   ├── Method.cs
│   │   │   ├── MethodCallContext.cs
│   │   │   ├── MethodCallDescriptor.cs
│   │   │   ├── MethodCallExtensions.cs
│   │   │   ├── MethodDelegates.cs
│   │   │   ├── MethodDiscoveryQuery.cs
│   │   │   ├── MethodReference.cs
│   │   │   ├── MethodType.cs
│   │   │   ├── Option.cs
│   │   │   ├── Plexus.Interop.Client.Core.csproj
│   │   │   ├── ProvidedMethodReference.cs
│   │   │   ├── ProvidedServiceDefinition.cs
│   │   │   ├── ProvidedServiceReference.cs
│   │   │   ├── ServiceDiscoveryQuery.cs
│   │   │   └── ServiceReference.cs
│   │   ├── Plexus.Interop.Client.Marshalling.Contracts/
│   │   │   ├── IMarshaller.cs
│   │   │   ├── IMarshallerProvider.cs
│   │   │   ├── Marshaller.cs
│   │   │   ├── NothingMarshaller.cs
│   │   │   └── Plexus.Interop.Client.Marshalling.Contracts.csproj
│   │   ├── Plexus.Interop.Client.Marshalling.Protobuf/
│   │   │   ├── Plexus.Interop.Client.Marshalling.Protobuf.csproj
│   │   │   └── ProtobufMarshallerProvider.cs
│   │   ├── Plexus.Interop.Client.Marshalling.Protobuf.Tests/
│   │   │   ├── Plexus.Interop.Client.Marshalling.Protobuf.Tests.csproj
│   │   │   └── ProtobufMarshallerProviderTests.cs
│   │   ├── Plexus.Interop.Metamodel/
│   │   │   ├── AnyMatchPattern.cs
│   │   │   ├── Application.cs
│   │   │   ├── CompositeMatchPattern.cs
│   │   │   ├── ConsumedMethod.cs
│   │   │   ├── ConsumedService.cs
│   │   │   ├── MatchPattern.cs
│   │   │   ├── Message.cs
│   │   │   ├── Method.cs
│   │   │   ├── Option.cs
│   │   │   ├── Plexus.Interop.Metamodel.csproj
│   │   │   ├── ProvidedMethod.cs
│   │   │   ├── ProvidedService.cs
│   │   │   ├── Registry.cs
│   │   │   └── Service.cs
│   │   ├── Plexus.Interop.Metamodel.Contracts/
│   │   │   ├── IApplication.cs
│   │   │   ├── IConsumedMethod.cs
│   │   │   ├── IConsumedService.cs
│   │   │   ├── IMatchPattern.cs
│   │   │   ├── IMessage.cs
│   │   │   ├── IMethod.cs
│   │   │   ├── IOption.cs
│   │   │   ├── IProvidedMethod.cs
│   │   │   ├── IProvidedService.cs
│   │   │   ├── IRegistry.cs
│   │   │   ├── IRegistryProvider.cs
│   │   │   ├── IService.cs
│   │   │   ├── LaunchMode.cs
│   │   │   ├── MatchType.cs
│   │   │   ├── MethodType.cs
│   │   │   └── Plexus.Interop.Metamodel.Contracts.csproj
│   │   ├── Plexus.Interop.Metamodel.Json/
│   │   │   ├── Internal/
│   │   │   │   ├── ApplicationDto.cs
│   │   │   │   ├── ConsumedMethodDto.cs
│   │   │   │   ├── ConsumedServiceDto.cs
│   │   │   │   ├── MethodDto.cs
│   │   │   │   ├── MethodTypeDto.cs
│   │   │   │   ├── OptionDto.cs
│   │   │   │   ├── OptionListExtensions.cs
│   │   │   │   ├── ProvidedMethodDto.cs
│   │   │   │   ├── ProvidedServiceDto.cs
│   │   │   │   ├── RegistryDto.cs
│   │   │   │   └── ServiceDto.cs
│   │   │   ├── JsonFileRegistryProvider.cs
│   │   │   ├── JsonRegistry.cs
│   │   │   └── Plexus.Interop.Metamodel.Json.csproj
│   │   ├── Plexus.Interop.Metamodel.Json.Tests/
│   │   │   ├── JsonRegistryProviderTests.cs
│   │   │   ├── Plexus.Interop.Metamodel.Json.Tests.csproj
│   │   │   └── interop.json
│   │   ├── Plexus.Interop.Protobuf/
│   │   │   ├── Plexus.Interop.Protobuf.csproj
│   │   │   ├── ProtobufConverter.cs
│   │   │   └── ProtobufExtensions.cs
│   │   ├── Plexus.Interop.Protocol/
│   │   │   ├── Internal/
│   │   │   │   ├── Connect/
│   │   │   │   │   ├── ConnectRequest.cs
│   │   │   │   │   └── ConnectResponse.cs
│   │   │   │   ├── ConsumedMethodReference.cs
│   │   │   │   ├── ConsumedServiceReference.cs
│   │   │   │   ├── Discovery/
│   │   │   │   │   ├── ContextLinkageOptions.cs
│   │   │   │   │   ├── DiscoveredMethod.cs
│   │   │   │   │   ├── DiscoveredService.cs
│   │   │   │   │   ├── DiscoveredServiceMethod.cs
│   │   │   │   │   ├── MethodDiscoveryRequest.cs
│   │   │   │   │   ├── MethodDiscoveryResponse.cs
│   │   │   │   │   ├── ServiceDiscoveryRequest.cs
│   │   │   │   │   └── ServiceDiscoveryResponse.cs
│   │   │   │   ├── Invocation/
│   │   │   │   │   ├── InvocationMessageHeader.cs
│   │   │   │   │   ├── InvocationMessageReceived.cs
│   │   │   │   │   ├── InvocationSendCompleted.cs
│   │   │   │   │   ├── InvocationStart.cs
│   │   │   │   │   ├── InvocationStartRequested.cs
│   │   │   │   │   ├── InvocationStarted.cs
│   │   │   │   │   └── InvocationStarting.cs
│   │   │   │   ├── Option.cs
│   │   │   │   ├── ProvidedMethodReference.cs
│   │   │   │   └── ProvidedServiceReference.cs
│   │   │   ├── Plexus.Interop.Protocol.csproj
│   │   │   └── ProtocolMessagePool.cs
│   │   ├── Plexus.Interop.Protocol.Common.Contracts/
│   │   │   ├── CompletionHeader.cs
│   │   │   ├── CompletionStatusHeader.cs
│   │   │   ├── ErrorHeader.cs
│   │   │   └── Plexus.Interop.Protocol.Common.Contracts.csproj
│   │   ├── Plexus.Interop.Protocol.Contracts/
│   │   │   ├── BrokerToClientRequestHandler.cs
│   │   │   ├── ClientToBrokerRequestHandler.cs
│   │   │   ├── Connect/
│   │   │   │   ├── IConnectProtocolMessageFactory.cs
│   │   │   │   ├── IConnectProtocolSerializer.cs
│   │   │   │   ├── IConnectRequest.cs
│   │   │   │   └── IConnectResponse.cs
│   │   │   ├── ContextLinkageDiscoveryMode.cs
│   │   │   ├── Discovery/
│   │   │   │   ├── DiscoveryMode.cs
│   │   │   │   ├── IDiscoveredMethod.cs
│   │   │   │   ├── IDiscoveredService.cs
│   │   │   │   ├── IDiscoveredServiceMethod.cs
│   │   │   │   ├── IDiscoveryProtocolMessageFactory.cs
│   │   │   │   ├── IDiscoveryProtocolSerializer.cs
│   │   │   │   ├── IMethodDiscoveryRequest.cs
│   │   │   │   ├── IMethodDiscoveryResponse.cs
│   │   │   │   ├── IServiceDiscoveryRequest.cs
│   │   │   │   ├── IServiceDiscoveryResponse.cs
│   │   │   │   └── MethodType.cs
│   │   │   ├── IBrokerToClientRequest.cs
│   │   │   ├── IClientToBrokerRequest.cs
│   │   │   ├── IConsumedMethodReference.cs
│   │   │   ├── IConsumedServiceReference.cs
│   │   │   ├── IContextLinkageOptions.cs
│   │   │   ├── IOption.cs
│   │   │   ├── IProtocolImplementation.cs
│   │   │   ├── IProtocolMessage.cs
│   │   │   ├── IProtocolMessageFactory.cs
│   │   │   ├── IProtocolSerializer.cs
│   │   │   ├── IProtocolSerializerFactory.cs
│   │   │   ├── IProvidedMethodReference.cs
│   │   │   ├── IProvidedServiceReference.cs
│   │   │   ├── Invocation/
│   │   │   │   ├── IInvocationMessage.cs
│   │   │   │   ├── IInvocationMessageHeader.cs
│   │   │   │   ├── IInvocationMessageReceived.cs
│   │   │   │   ├── IInvocationProtocolMessageFactory.cs
│   │   │   │   ├── IInvocationProtocolSerializer.cs
│   │   │   │   ├── IInvocationSendCompleted.cs
│   │   │   │   ├── IInvocationStart.cs
│   │   │   │   ├── IInvocationStartRequested.cs
│   │   │   │   ├── IInvocationStarted.cs
│   │   │   │   ├── IInvocationStarting.cs
│   │   │   │   ├── IInvocationTarget.cs
│   │   │   │   ├── InvocationMessageHandler.cs
│   │   │   │   └── InvocationTargetHandler.cs
│   │   │   ├── Plexus.Interop.Protocol.Contracts.csproj
│   │   │   ├── ProtocolImplementation.cs
│   │   │   └── ProtocolMessageFactoryExtensions.cs
│   │   ├── Plexus.Interop.Protocol.Protobuf/
│   │   │   ├── Internal/
│   │   │   │   ├── BrokerToClientRequestEnvelope.cs
│   │   │   │   ├── ClientToBrokerRequestEnvelope.cs
│   │   │   │   ├── ConnectRequest.cs
│   │   │   │   ├── ConnectResponse.cs
│   │   │   │   ├── ConsumedMethodReference.cs
│   │   │   │   ├── ConsumedServiceReference.cs
│   │   │   │   ├── ContextLinkageDiscoveryOptions.cs
│   │   │   │   ├── DiscoveredMethod.cs
│   │   │   │   ├── DiscoveredService.cs
│   │   │   │   ├── DiscoveredServiceMethod.cs
│   │   │   │   ├── Empty.cs
│   │   │   │   ├── InvocationMessageEnvelope.cs
│   │   │   │   ├── InvocationMessageHeader.cs
│   │   │   │   ├── InvocationMessageReceived.cs
│   │   │   │   ├── InvocationSendCompleted.cs
│   │   │   │   ├── InvocationStartRequest.cs
│   │   │   │   ├── InvocationStartRequested.cs
│   │   │   │   ├── InvocationStarted.cs
│   │   │   │   ├── InvocationStarting.cs
│   │   │   │   ├── MethodDiscoveryRequest.cs
│   │   │   │   ├── MethodDiscoveryResponse.cs
│   │   │   │   ├── Option.cs
│   │   │   │   ├── ProvidedMethodReference.cs
│   │   │   │   ├── ProvidedServiceReference.cs
│   │   │   │   ├── ServiceDiscoveryRequest.cs
│   │   │   │   └── ServiceDiscoveryResponse.cs
│   │   │   ├── Plexus.Interop.Protocol.Protobuf.csproj
│   │   │   ├── ProtobufProtocolSerializer.cs
│   │   │   └── ProtobufProtocolSerializerFactory.cs
│   │   ├── Plexus.Interop.Protocol.Protobuf.Tests/
│   │   │   ├── Plexus.Interop.Protocol.Protobuf.Tests.csproj
│   │   │   ├── ProtobufSerializerTests.cs
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Samples.CcyPairRateProvider/
│   │   │   ├── CcyPairRateProvider.cmd
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   ├── fx/
│   │   │   │   │   ├── CcyPairRateService.msg.g.cs
│   │   │   │   │   └── CcyPairRateService.svc.g.cs
│   │   │   │   ├── interop/
│   │   │   │   │   └── Options.msg.g.cs
│   │   │   │   └── vendor_a/
│   │   │   │       └── fx/
│   │   │   │           └── CcyPairRateProvider.app.g.cs
│   │   │   ├── Plexus.Interop.Samples.CcyPairRateProvider.csproj
│   │   │   ├── Program.cs
│   │   │   └── Properties/
│   │   │       └── launchSettings.json
│   │   ├── Plexus.Interop.Samples.CcyPairRateViewer/
│   │   │   ├── CcyPairRateViewer.cmd
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   ├── fx/
│   │   │   │   │   ├── CcyPairRateService.msg.g.cs
│   │   │   │   │   └── CcyPairRateService.svc.g.cs
│   │   │   │   ├── interop/
│   │   │   │   │   └── Options.msg.g.cs
│   │   │   │   └── vendor_b/
│   │   │   │       └── fx/
│   │   │   │           └── CcyPairRateViewer.app.g.cs
│   │   │   ├── Plexus.Interop.Samples.CcyPairRateViewer.csproj
│   │   │   ├── Program.cs
│   │   │   └── Properties/
│   │   │       └── launchSettings.json
│   │   ├── Plexus.Interop.Samples.GreetingClient/
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   └── interop/
│   │   │   │       ├── Options.msg.g.cs
│   │   │   │       └── samples/
│   │   │   │           ├── GreetingClient.app.g.cs
│   │   │   │           ├── GreetingService.msg.g.cs
│   │   │   │           └── GreetingService.svc.g.cs
│   │   │   ├── LaunchGreetingClient.cmd
│   │   │   ├── Plexus.Interop.Samples.GreetingClient.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   └── nlog.config
│   │   ├── Plexus.Interop.Samples.GreetingServer/
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   └── interop/
│   │   │   │       ├── Options.msg.g.cs
│   │   │   │       └── samples/
│   │   │   │           ├── GreetingServer.app.g.cs
│   │   │   │           ├── GreetingService.msg.g.cs
│   │   │   │           └── GreetingService.svc.g.cs
│   │   │   ├── LaunchGreetingServer.cmd
│   │   │   ├── Plexus.Interop.Samples.GreetingServer.csproj
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   └── launchSettings.json
│   │   │   └── nlog.config
│   │   ├── Plexus.Interop.Samples.Metadata/
│   │   │   └── Plexus.Interop.Samples.Metadata.csproj
│   │   ├── Plexus.Interop.Testing/
│   │   │   ├── Generate.cmd
│   │   │   ├── Generated/
│   │   │   │   └── interop/
│   │   │   │       ├── AppConnectionDescriptor.msg.g.cs
│   │   │   │       ├── AppLaunchMode.msg.g.cs
│   │   │   │       ├── AppLauncherService.msg.g.cs
│   │   │   │       ├── AppLauncherService.svc.g.cs
│   │   │   │       ├── AppLifecycleService.msg.g.cs
│   │   │   │       ├── AppLifecycleService.svc.g.cs
│   │   │   │       ├── AppMetadataService.msg.g.cs
│   │   │   │       ├── AppMetadataService.svc.g.cs
│   │   │   │       ├── AppRegistrationService.msg.g.cs
│   │   │   │       ├── AppRegistrationService.svc.g.cs
│   │   │   │       ├── ContextLinkage.msg.g.cs
│   │   │   │       ├── ContextLinkage.svc.g.cs
│   │   │   │       ├── InvocationDescriptor.msg.g.cs
│   │   │   │       ├── Options.msg.g.cs
│   │   │   │       ├── UniqueId.msg.g.cs
│   │   │   │       └── testing/
│   │   │   │           ├── EchoClient.app.g.cs
│   │   │   │           ├── EchoServer.app.g.cs
│   │   │   │           ├── EchoService.msg.g.cs
│   │   │   │           ├── EchoService.svc.g.cs
│   │   │   │           ├── GreetingService.msg.g.cs
│   │   │   │           ├── GreetingService.svc.g.cs
│   │   │   │           └── TestAppLauncher.app.g.cs
│   │   │   ├── ITestBroker.cs
│   │   │   ├── NLog.config
│   │   │   ├── ObservableExtensions.cs
│   │   │   ├── Plexus.Interop.Testing.csproj
│   │   │   ├── Properties/
│   │   │   │   └── AssemblyInfo.cs
│   │   │   ├── TestAppLauncher.cs
│   │   │   ├── TestBroker.cs
│   │   │   ├── TestBrokerConfig/
│   │   │   │   ├── NLog.config
│   │   │   │   └── metadata/
│   │   │   │       ├── apps.json
│   │   │   │       └── interop.json
│   │   │   ├── TestBrokerFixture.cs
│   │   │   ├── TestClientFactory.cs
│   │   │   └── UniqueId.Extensions.cs
│   │   ├── Plexus.Interop.Tests/
│   │   │   ├── AppLifecycleServiceIntegrationTests.cs
│   │   │   ├── BaseClientBrokerTestsSuite.cs
│   │   │   ├── ClientBrokerIntegrationTests.cs
│   │   │   ├── ContextLinkageIntegrationTests.cs
│   │   │   ├── Plexus.Interop.Tests.csproj
│   │   │   ├── SpecificAppInstanceCallIntegrationTests.cs
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Tests.sln
│   │   ├── Plexus.Interop.Transport/
│   │   │   ├── Internal/
│   │   │   │   ├── ChannelMessage.cs
│   │   │   │   ├── FrameMessage.cs
│   │   │   │   ├── ITransportReceiveProcessor.cs
│   │   │   │   ├── ITransportSendProcessor.cs
│   │   │   │   ├── TransportChannel.cs
│   │   │   │   ├── TransportChannelSendProcessor.cs
│   │   │   │   ├── TransportClient.cs
│   │   │   │   ├── TransportConnection.cs
│   │   │   │   ├── TransportConnectionFactory.cs
│   │   │   │   ├── TransportConnectionStateValidator.cs
│   │   │   │   ├── TransportReceiveProcessor.cs
│   │   │   │   ├── TransportSendProcessor.cs
│   │   │   │   ├── TransportServer.cs
│   │   │   │   └── TransportUtils.cs
│   │   │   ├── Plexus.Interop.Transport.csproj
│   │   │   ├── TransportChannelUtils.cs
│   │   │   ├── TransportClientFactory.cs
│   │   │   └── TransportServerFactory.cs
│   │   ├── Plexus.Interop.Transport.Contracts/
│   │   │   ├── ITransportChannel.cs
│   │   │   ├── ITransportClient.cs
│   │   │   ├── ITransportConnection.cs
│   │   │   ├── ITransportServer.cs
│   │   │   ├── Plexus.Interop.Transport.Contracts.csproj
│   │   │   ├── TransportExtensions.cs
│   │   │   └── TransportMessageFrame.cs
│   │   ├── Plexus.Interop.Transport.Pipes.Tests/
│   │   │   ├── PipeTransportTests.cs
│   │   │   ├── Plexus.Interop.Transport.Pipes.Tests.csproj
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Transport.Protocol/
│   │   │   ├── Internal/
│   │   │   │   ├── GetBodyLengthHandler.cs
│   │   │   │   ├── TransportChannelCloseHeader.cs
│   │   │   │   ├── TransportChannelOpenHeader.cs
│   │   │   │   ├── TransportConnectionCloseHeader.cs
│   │   │   │   ├── TransportConnectionOpenHeader.cs
│   │   │   │   └── TransportFrameHeader.cs
│   │   │   ├── MessagingReceiveProcessor.cs
│   │   │   ├── MessagingSendProcessor.cs
│   │   │   ├── Plexus.Interop.Transport.Protocol.csproj
│   │   │   └── TransportHeaderPool.cs
│   │   ├── Plexus.Interop.Transport.Protocol.Contracts/
│   │   │   ├── IChannelHeaderFactory.cs
│   │   │   ├── IChannelOpenHeader.cs
│   │   │   ├── IConnectionHeaderFactory.cs
│   │   │   ├── IMessagingReceiveProcessor.cs
│   │   │   ├── IMessagingSendProcessor.cs
│   │   │   ├── ITransportChannelCloseHeader.cs
│   │   │   ├── ITransportChannelHeader.cs
│   │   │   ├── ITransportChannelHeaderHandler.cs
│   │   │   ├── ITransportChannelOpenHeader.cs
│   │   │   ├── ITransportConnectionCloseHeader.cs
│   │   │   ├── ITransportConnectionHeader.cs
│   │   │   ├── ITransportConnectionHeaderHandler.cs
│   │   │   ├── ITransportConnectionOpenHeader.cs
│   │   │   ├── ITransportFrameHeader.cs
│   │   │   ├── ITransportHeader.cs
│   │   │   ├── ITransportHeaderFactory.cs
│   │   │   ├── ITransportHeaderHandler.cs
│   │   │   ├── MetadataViolationException.cs
│   │   │   ├── Plexus.Interop.Transport.Protocol.Contracts.csproj
│   │   │   ├── ProtocolException.cs
│   │   │   ├── RemoteErrorException.cs
│   │   │   ├── RemoteException.cs
│   │   │   ├── Serialization/
│   │   │   │   ├── ITransportProtocolDeserializer.cs
│   │   │   │   ├── ITransportProtocolSerializationProvider.cs
│   │   │   │   └── ITransportProtocolSerializer.cs
│   │   │   ├── TransportChannelHeaderHandler.cs
│   │   │   ├── TransportConnectionHeaderHandler.cs
│   │   │   ├── TransportHeaderHandler.cs
│   │   │   └── TransportMessage.cs
│   │   ├── Plexus.Interop.Transport.Protocol.Protobuf/
│   │   │   ├── Internal/
│   │   │   │   ├── ChannelCloseHeader.cs
│   │   │   │   ├── ChannelOpenHeader.cs
│   │   │   │   ├── ConnectionCloseHeader.cs
│   │   │   │   ├── ConnectionOpenHeader.cs
│   │   │   │   ├── Header.cs
│   │   │   │   ├── MessageFrameHeader.cs
│   │   │   │   ├── ProtobufTransportProtocolDeserializer.cs
│   │   │   │   └── ProtobufTransportProtocolSerializer.cs
│   │   │   ├── Plexus.Interop.Transport.Protocol.Protobuf.csproj
│   │   │   └── ProtobufTransportSerialization.cs
│   │   ├── Plexus.Interop.Transport.Protocol.Tests/
│   │   │   ├── MessagingTests.cs
│   │   │   └── Plexus.Interop.Transport.Protocol.Tests.csproj
│   │   ├── Plexus.Interop.Transport.Testing/
│   │   │   ├── Plexus.Interop.Transport.Testing.csproj
│   │   │   └── TransportTestsSuite.cs
│   │   ├── Plexus.Interop.Transport.Transmission.Contracts/
│   │   │   ├── ITransmissionClient.cs
│   │   │   ├── ITransmissionConnection.cs
│   │   │   ├── ITransmissionServer.cs
│   │   │   └── Plexus.Interop.Transport.Transmission.Contracts.csproj
│   │   ├── Plexus.Interop.Transport.Transmission.Pipes/
│   │   │   ├── Internal/
│   │   │   │   ├── PipeTransmissionClient.cs
│   │   │   │   └── PipeTransmissionServer.cs
│   │   │   ├── PipeTranmissionServerFactory.cs
│   │   │   ├── PipeTransmissionClientFactory.cs
│   │   │   └── Plexus.Interop.Transport.Transmission.Pipes.csproj
│   │   ├── Plexus.Interop.Transport.Transmission.Pipes.Tests/
│   │   │   ├── PipeTransmissionTests.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.Pipes.Tests.csproj
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Transport.Transmission.Streams/
│   │   │   ├── Internal/
│   │   │   │   ├── StreamTransmissionReader.cs
│   │   │   │   └── StreamTransmissionWriter.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.Streams.csproj
│   │   │   └── StreamTransmissionConnection.cs
│   │   ├── Plexus.Interop.Transport.Transmission.Testing/
│   │   │   ├── Plexus.Interop.Transport.Transmission.Testing.csproj
│   │   │   └── TransmissionTestsSuite.cs
│   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Client/
│   │   │   ├── Internal/
│   │   │   │   ├── WebSocketClientTransmissionConnection.cs
│   │   │   │   ├── WebSocketClientTransmissionReader.cs
│   │   │   │   └── WebSocketClientTransmissionWriter.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Client.csproj
│   │   │   └── WebSocketTransmissionClient.cs
│   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Server/
│   │   │   ├── Internal/
│   │   │   │   ├── WebSocketServerTransmissionConnection.cs
│   │   │   │   ├── WebSocketServerTransmissionReader.cs
│   │   │   │   ├── WebSocketServerTransmissionWriter.cs
│   │   │   │   └── WebSocketTransmissionServer.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.csproj
│   │   │   ├── WebSocketTransmissionServerFactory.cs
│   │   │   └── WebSocketTransmissionServerOptions.cs
│   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.Fleck/
│   │   │   ├── Internal/
│   │   │   │   ├── WebSocketServerTransmissionConnection.cs
│   │   │   │   ├── WebSocketServerTransmissionReader.cs
│   │   │   │   ├── WebSocketServerTransmissionWriter.cs
│   │   │   │   └── WebSocketTransmissionServer.cs
│   │   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Server.Fleck.csproj
│   │   │   ├── WebSocketTransmissionServerFactory.cs
│   │   │   └── WebSocketTransmissionServerOptions.cs
│   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Tests/
│   │   │   ├── Plexus.Interop.Transport.Transmission.WebSockets.Tests.csproj
│   │   │   ├── WebSocketSecureTransmissionTests.cs
│   │   │   ├── WebSocketTransmissionTests.cs
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.Transport.Utils/
│   │   │   ├── IServerStateReader.cs
│   │   │   ├── IServerStateWriter.cs
│   │   │   ├── Plexus.Interop.Transport.Utils.csproj
│   │   │   ├── ServerStateReader.cs
│   │   │   ├── ServerStateUtils.cs
│   │   │   └── ServerStateWriter.cs
│   │   ├── Plexus.Interop.Transport.WebSockets.Tests/
│   │   │   ├── Plexus.Interop.Transport.WebSockets.Tests.csproj
│   │   │   ├── WebSocketSecureTransportTests.cs
│   │   │   ├── WebSocketTransportTests.cs
│   │   │   └── xunit.runner.json
│   │   ├── Plexus.Interop.sln
│   │   ├── Plexus.Interop.sln.DotSettings
│   │   ├── Plexus.Logging/
│   │   │   ├── ILogger.cs
│   │   │   ├── ILoggerFactory.cs
│   │   │   ├── LogConfig.cs
│   │   │   ├── LogLevel.cs
│   │   │   ├── LogManager.cs
│   │   │   ├── LoggerExtensions.Any.cs
│   │   │   ├── LoggerExtensions.Debug.cs
│   │   │   ├── LoggerExtensions.Error.cs
│   │   │   ├── LoggerExtensions.Fatal.cs
│   │   │   ├── LoggerExtensions.Info.cs
│   │   │   ├── LoggerExtensions.Trace.cs
│   │   │   ├── LoggerExtensions.Warn.cs
│   │   │   ├── NoopLogger.cs
│   │   │   ├── NoopLoggerFactory.cs
│   │   │   ├── Plexus.Logging.csproj
│   │   │   └── TypeExtensions.cs
│   │   ├── Plexus.Logging.CommonLogging/
│   │   │   ├── Logger.cs
│   │   │   ├── LoggerFactory.cs
│   │   │   ├── LoggingInitializer.cs
│   │   │   └── Plexus.Logging.CommonLogging.csproj
│   │   ├── Plexus.Logging.NLog/
│   │   │   ├── AsyncExceptionLayoutRenderer.cs
│   │   │   ├── Logger.cs
│   │   │   ├── LoggerFactory.cs
│   │   │   ├── LoggingInitializer.cs
│   │   │   ├── Plexus.Logging.NLog.csproj
│   │   │   └── WorkDirLayoutRenderer.cs
│   │   ├── Plexus.Utils/
│   │   │   ├── ArrayConstants.cs
│   │   │   ├── AsyncHelper.cs
│   │   │   ├── AwaitableCancellationToken.cs
│   │   │   ├── BaseJsonFileRegistryProvider.cs
│   │   │   ├── Channels/
│   │   │   │   ├── BufferedChannel.cs
│   │   │   │   └── ChannelUtils.cs
│   │   │   ├── EqualityHelper.cs
│   │   │   ├── ExceptionHelper.cs
│   │   │   ├── FileSystemUtils.cs
│   │   │   ├── FormattingUtils.cs
│   │   │   ├── JsonConvert.cs
│   │   │   ├── Latch.cs
│   │   │   ├── Plexus.Utils.csproj
│   │   │   ├── Pools/
│   │   │   │   ├── ObjectPool.cs
│   │   │   │   ├── PooledBuffer.cs
│   │   │   │   ├── PooledBufferExtensions.cs
│   │   │   │   └── PooledObject.cs
│   │   │   ├── Processes/
│   │   │   │   └── ProcessBase.cs
│   │   │   ├── Promise.cs
│   │   │   ├── Promise`1.cs
│   │   │   ├── Properties/
│   │   │   │   └── AssemblyInfo.cs
│   │   │   ├── StreamExtensions.cs
│   │   │   ├── TaskConstants.cs
│   │   │   ├── TaskConstants`1.cs
│   │   │   ├── TaskExtensions.cs
│   │   │   ├── TaskHelper.cs
│   │   │   ├── TaskLoggingExtensions.cs
│   │   │   ├── TaskRunner.cs
│   │   │   ├── TimeoutConstants.cs
│   │   │   └── ValueTask.cs
│   │   ├── Plexus.Utils.Testing/
│   │   │   ├── DisplayTestMethodNameAttribute.cs
│   │   │   ├── Plexus.Utils.Testing.csproj
│   │   │   ├── RandomExtensions.cs
│   │   │   ├── ShoudlyExtensions.cs
│   │   │   ├── TestingInitializer.cs
│   │   │   └── TestsSuite.cs
│   │   ├── Plexus.Utils.Testing.Shared/
│   │   │   ├── DefaultTestCollection.cs
│   │   │   ├── NLog.config
│   │   │   ├── Plexus.Utils.Testing.Shared.projitems
│   │   │   └── Plexus.Utils.Testing.Shared.shproj
│   │   └── Plexus.Utils.Tests/
│   │       ├── Channels/
│   │       │   └── BufferedChannelTests.cs
│   │       ├── Plexus.Utils.Tests.csproj
│   │       ├── PromiseTests.cs
│   │       └── UniqueIdTests.cs
│   └── tests.cmd
├── docs/
│   ├── build.gradle
│   └── src/
│       └── main/
│           ├── asciidoc/
│           │   ├── app-registry-schema.json
│           │   ├── clone-and-build.adoc
│           │   ├── concepts-components.adoc
│           │   ├── concepts-definitions.adoc
│           │   ├── concepts-features.adoc
│           │   ├── concepts-overview.adoc
│           │   ├── getting-started-how-to-build.adoc
│           │   ├── getting-started-how-to-run-samples.adoc
│           │   ├── getting-started-repository-structure.adoc
│           │   ├── guides-how-to-write-custom-app-launcher.adoc
│           │   ├── guides-interop-integration-workflow.adoc
│           │   ├── guides-interop-invocation-workflow.adoc
│           │   ├── guides-quick-start-dotnet.adoc
│           │   ├── guides-quick-start-invocation-workflow.adoc
│           │   ├── guides-quick-start-launch-app.adoc
│           │   ├── guides-quick-start-launch-broker-step.adoc
│           │   ├── guides-quick-start-web.adoc
│           │   ├── guides-quick-start.adoc
│           │   ├── guides-system-requirements.adoc
│           │   ├── guides-tools.adoc
│           │   ├── images/
│           │   │   ├── high-level-architecture.graphml
│           │   │   ├── interop-integration.graphml
│           │   │   └── star-schema.graphml
│           │   ├── index.adoc
│           │   ├── spec-app-registry.adoc
│           │   ├── spec-interop-registry.adoc
│           │   └── spec-typescript-client-api.adoc
│           └── typescript/
│               └── interface.ts
├── dsl/
│   ├── .gitignore
│   ├── build.gradle
│   ├── gen/
│   │   ├── build.gradle
│   │   ├── cli/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── db/
│   │   │       │   │           └── plexus/
│   │   │       │   │               └── interop/
│   │   │       │   │                   └── dsl/
│   │   │       │   │                       └── gen/
│   │   │       │   │                           └── cli/
│   │   │       │   │                               ├── CLISetup.xtend
│   │   │       │   │                               ├── CLIStandaloneSetup.xtend
│   │   │       │   │                               ├── Main.java
│   │   │       │   │                               └── ParametersParser.java
│   │   │       │   └── resources/
│   │   │       │       └── plugin.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── cli/
│   │   │                                           └── ParametersParserTest.java
│   │   ├── common/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── com/
│   │   │       │           └── db/
│   │   │       │               └── plexus/
│   │   │       │                   └── interop/
│   │   │       │                       └── dsl/
│   │   │       │                           └── gen/
│   │   │       │                               ├── ApplicationCodeGenerator.java
│   │   │       │                               ├── BaseGenTask.java
│   │   │       │                               ├── BasePlexusIDLGenerator.xtend
│   │   │       │                               ├── CodeOutputGenerator.java
│   │   │       │                               ├── Entry.java
│   │   │       │                               ├── EntryPoint.java
│   │   │       │                               ├── GenTask.java
│   │   │       │                               ├── GenUtils.xtend
│   │   │       │                               ├── PlexusGenConfig.java
│   │   │       │                               ├── PlexusGeneratorModule.xtend
│   │   │       │                               ├── ResourceSetValidator.xtend
│   │   │       │                               ├── errors/
│   │   │       │                               │   └── CodeGenerationException.java
│   │   │       │                               └── util/
│   │   │       │                                   ├── CombinedFilePathMatcher.java
│   │   │       │                                   ├── FileUtils.java
│   │   │       │                                   ├── ProcessResult.java
│   │   │       │                                   ├── ProcessUtils.java
│   │   │       │                                   └── SimplePathMatcher.java
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       ├── BaseCodeGenTest.java
│   │   │                                       └── util/
│   │   │                                           ├── CombinedFilePathMatcherTest.java
│   │   │                                           └── FileUtilsTest.java
│   │   ├── csharp/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── csharp/
│   │   │                                           ├── CsharpCodeGenerator.xtend
│   │   │                                           └── CsharpGenTask.xtend
│   │   ├── js/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── com/
│   │   │       │           └── db/
│   │   │       │               └── plexus/
│   │   │       │                   └── interop/
│   │   │       │                       └── dsl/
│   │   │       │                           └── gen/
│   │   │       │                               └── js/
│   │   │       │                                   ├── JsComponentApiGenerator.xtend
│   │   │       │                                   └── JsGenTask.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── db/
│   │   │           │           └── plexus/
│   │   │           │               └── interop/
│   │   │           │                   └── dsl/
│   │   │           │                       └── gen/
│   │   │           │                           └── js/
│   │   │           │                               └── tests/
│   │   │           │                                   └── JsComponentApiGeneratorTest.xtend
│   │   │           └── resources/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── js/
│   │   │                                           └── tests/
│   │   │                                               └── expected.data
│   │   ├── meta/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   └── java/
│   │   │       │       └── com/
│   │   │       │           └── db/
│   │   │       │               └── plexus/
│   │   │       │                   └── interop/
│   │   │       │                       └── dsl/
│   │   │       │                           ├── gen/
│   │   │       │                           │   └── meta/
│   │   │       │                           │       ├── ListMetadataFilesTask.xtend
│   │   │       │                           │       ├── MetaJsonGenTask.xtend
│   │   │       │                           │       ├── MetaJsonGenerator.xtend
│   │   │       │                           │       ├── MetaPatchValidatorTask.xtend
│   │   │       │                           │       └── MetaValidatorTask.xtend
│   │   │       │                           └── validation/
│   │   │       │                               ├── Issues.xtend
│   │   │       │                               ├── MetadataPatchValidator.xtend
│   │   │       │                               └── rules/
│   │   │       │                                   ├── NoAppsDeletedRule.xtend
│   │   │       │                                   ├── NoFieldsChangedRule.xtend
│   │   │       │                                   ├── NoFieldsDeletedRule.xtend
│   │   │       │                                   ├── NoMessagesDeletedRule.xtend
│   │   │       │                                   ├── NoMethodTypesChangedRule.xtend
│   │   │       │                                   ├── NoMethodsDeletedRule.xtend
│   │   │       │                                   ├── NoServiceDeletedRule.xtend
│   │   │       │                                   ├── RulesModule.xtend
│   │   │       │                                   └── UpdateRule.java
│   │   │       └── test/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── db/
│   │   │           │           └── plexus/
│   │   │           │               └── interop/
│   │   │           │                   └── dsl/
│   │   │           │                       ├── gen/
│   │   │           │                       │   └── metadata/
│   │   │           │                       │       └── tests/
│   │   │           │                       │           ├── MetaJsonGeneratorTest.xtend
│   │   │           │                       │           └── MetaValidatorTaskTest.xtend
│   │   │           │                       └── validation/
│   │   │           │                           └── rules/
│   │   │           │                               ├── BaseRuleTest.xtend
│   │   │           │                               ├── NoAppsDeletedRuleTest.xtend
│   │   │           │                               ├── NoFieldsChangedRuleTest.xtend
│   │   │           │                               ├── NoFieldsDeletedRuleTest.xtend
│   │   │           │                               ├── NoMessagesDeletedRuleTest.xtend
│   │   │           │                               ├── NoMethodTypesChangedRuleTest.xtend
│   │   │           │                               ├── NoMethodsDeletedRuleTest.xtend
│   │   │           │                               └── NoServiceDeletedRuleTest.xtend
│   │   │           └── resources/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── metadata/
│   │   │                                           └── tests/
│   │   │                                               └── expected.json
│   │   ├── proto/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── proto/
│   │   │                                           ├── ProtoGenTask.xtend
│   │   │                                           └── ProtoOption.xtend
│   │   ├── test/
│   │   │   ├── build.gradle
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── db/
│   │   │           │           └── plexus/
│   │   │           │               └── interop/
│   │   │           │                   └── dsl/
│   │   │           │                       └── gen/
│   │   │           │                           └── test/
│   │   │           │                               ├── InteropLangInjectionProvider.java
│   │   │           │                               └── ResourceUtils.xtend
│   │   │           └── resources/
│   │   │               └── com/
│   │   │                   └── db/
│   │   │                       └── plexus/
│   │   │                           └── interop/
│   │   │                               └── dsl/
│   │   │                                   └── gen/
│   │   │                                       └── test/
│   │   │                                           ├── components/
│   │   │                                           │   ├── component_a.interop
│   │   │                                           │   ├── component_a_invalid.interop
│   │   │                                           │   └── component_c.interop
│   │   │                                           ├── model/
│   │   │                                           │   ├── messages.proto
│   │   │                                           │   ├── missed_message.proto
│   │   │                                           │   ├── missed_message_field.proto
│   │   │                                           │   ├── options.proto
│   │   │                                           │   └── updated_message_fields.proto
│   │   │                                           └── services/
│   │   │                                               ├── deleted_service.proto
│   │   │                                               ├── deleted_service_method.proto
│   │   │                                               ├── services.proto
│   │   │                                               └── updated_service_methods.proto
│   │   └── ts/
│   │       ├── build.gradle
│   │       └── src/
│   │           ├── main/
│   │           │   └── java/
│   │           │       └── com/
│   │           │           └── db/
│   │           │               └── plexus/
│   │           │                   └── interop/
│   │           │                       └── dsl/
│   │           │                           └── gen/
│   │           │                               └── ts/
│   │           │                                   ├── TsGenTask.java
│   │           │                                   └── TypescriptApplicationApiGenerator.xtend
│   │           └── test/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── db/
│   │               │           └── plexus/
│   │               │               └── interop/
│   │               │                   └── dsl/
│   │               │                       └── gen/
│   │               │                           └── ts/
│   │               │                               └── tests/
│   │               │                                   └── TypescriptComponentApiGeneratorTest.xtend
│   │               └── resources/
│   │                   └── com/
│   │                       └── db/
│   │                           └── plexus/
│   │                               └── interop/
│   │                                   └── dsl/
│   │                                       └── gen/
│   │                                           └── ts/
│   │                                               └── tests/
│   │                                                   └── expected.data
│   ├── gradle.properties
│   ├── ide-common/
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── db/
│   │                       └── plexus/
│   │                           └── interop/
│   │                               └── ide/
│   │                                   ├── assist/
│   │                                   │   └── ImportContentProvider.java
│   │                                   └── server/
│   │                                       └── DebugServerLauncher.java
│   ├── interop-lang/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── db/
│   │       │   │           └── plexus/
│   │       │   │               └── interop/
│   │       │   │                   └── dsl/
│   │       │   │                       ├── GenerateInteropLang.mwe2
│   │       │   │                       ├── GlobalLangConfigHolder.java
│   │       │   │                       ├── InteropLang.xtext
│   │       │   │                       ├── InteropLangRuntimeModule.xtend
│   │       │   │                       ├── InteropLangStandaloneSetup.xtend
│   │       │   │                       ├── InteropLangUtils.xtend
│   │       │   │                       ├── formatting2/
│   │       │   │                       │   └── InteropLangFormatter.xtend
│   │       │   │                       ├── generator/
│   │       │   │                       │   └── InteropLangGenerator.xtend
│   │       │   │                       ├── scoping/
│   │       │   │                       │   ├── InteropLangQualifiedNameProvider.xtend
│   │       │   │                       │   └── InteropLangScopeProvider.xtend
│   │       │   │                       └── validation/
│   │       │   │                           └── InteropLangValidator.xtend
│   │       │   └── resources/
│   │       │       └── interop/
│   │       │           ├── app_connection_descriptor.proto
│   │       │           ├── app_launch_mode.proto
│   │       │           ├── app_launcher_service.proto
│   │       │           ├── app_lifecycle_manager.interop
│   │       │           ├── app_lifecycle_service.proto
│   │       │           ├── app_metadata_service.proto
│   │       │           ├── app_registration_service.proto
│   │       │           ├── command_line_tool.interop
│   │       │           ├── context_linkage.proto
│   │       │           ├── descriptor.proto
│   │       │           ├── invocation_descriptor.proto
│   │       │           ├── native_app_launcher.interop
│   │       │           ├── options.proto
│   │       │           ├── testing/
│   │       │           │   ├── echo_client.interop
│   │       │           │   ├── echo_server.interop
│   │       │           │   ├── echo_service.proto
│   │       │           │   ├── echo_service_options.proto
│   │       │           │   ├── greeting_service.proto
│   │       │           │   └── test_app_launcher.interop
│   │       │           └── unique_id.proto
│   │       └── test/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── db/
│   │           │           └── plexus/
│   │           │               └── interop/
│   │           │                   └── dsl/
│   │           │                       └── tests/
│   │           │                           ├── InteropLangInjectionProvider.java
│   │           │                           └── InteropLangParsingTest.xtend
│   │           └── resources/
│   │               └── com/
│   │                   └── db/
│   │                       └── plexus/
│   │                           └── interop/
│   │                               └── dsl/
│   │                                   └── tests/
│   │                                       ├── example1.interop
│   │                                       ├── example1.proto
│   │                                       ├── example2.interop
│   │                                       ├── example3.interop
│   │                                       ├── provide_as_alias.interop
│   │                                       ├── provide_duplicate.interop
│   │                                       ├── provide_duplicate_option.interop
│   │                                       ├── subfolder/
│   │                                       │   └── example2.proto
│   │                                       └── wrong.interop
│   ├── interop-lang-vscode/
│   │   ├── .gitignore
│   │   ├── .vscode/
│   │   │   ├── launch.json
│   │   │   └── tasks.json
│   │   ├── .vscodeignore
│   │   ├── README.md
│   │   ├── build.gradle
│   │   ├── interop.configuration.json
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── extension.ts
│   │   ├── syntaxes/
│   │   │   ├── interop.tmLanguage
│   │   │   └── proto.tmLanguage
│   │   └── tsconfig.json
│   ├── interop-lang.ide/
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── db/
│   │                       └── plexus/
│   │                           └── interop/
│   │                               └── dsl/
│   │                                   └── ide/
│   │                                       ├── InteropLangIdeModule.xtend
│   │                                       ├── InteropLangIdeSetup.xtend
│   │                                       ├── assist/
│   │                                       │   ├── InteropContentProposalProvider.java
│   │                                       │   └── InteropCrossRefProposalProvider.java
│   │                                       └── server/
│   │                                           ├── InteropDebugServerLauncher.java
│   │                                           ├── InteropLangServerModule.java
│   │                                           ├── InteropLanguageServer.java
│   │                                           └── StdIOServerLauncher.java
│   ├── model/
│   │   ├── META-INF/
│   │   │   └── MANIFEST.MF
│   │   ├── build.gradle
│   │   ├── build.properties
│   │   ├── plugin.properties
│   │   ├── plugin.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               ├── interop.xcore
│   │               └── proto.xcore
│   ├── proto-lang/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── db/
│   │       │   │           └── plexus/
│   │       │   │               └── interop/
│   │       │   │                   └── dsl/
│   │       │   │                       └── protobuf/
│   │       │   │                           ├── GenerateProtoLang.mwe2
│   │       │   │                           ├── ProtoLang.xtext
│   │       │   │                           ├── ProtoLangConfig.xtend
│   │       │   │                           ├── ProtoLangImportResolver.xtend
│   │       │   │                           ├── ProtoLangRuntimeModule.xtend
│   │       │   │                           ├── ProtoLangStandaloneSetup.xtend
│   │       │   │                           ├── ProtoLangUtils.xtend
│   │       │   │                           ├── StaticConfigHolder.java
│   │       │   │                           ├── formatting2/
│   │       │   │                           │   └── ProtoLangFormatter.xtend
│   │       │   │                           ├── generator/
│   │       │   │                           │   └── ProtoLangGenerator.xtend
│   │       │   │                           ├── scoping/
│   │       │   │                           │   ├── ProtoLangGlobalScopeProvider.xtend
│   │       │   │                           │   ├── ProtoLangLocalScopeProvider.xtend
│   │       │   │                           │   ├── ProtoLangQualifiedNameProvider.xtend
│   │       │   │                           │   └── ProtoLangScopeProvider.xtend
│   │       │   │                           └── validation/
│   │       │   │                               └── ProtoLangValidator.xtend
│   │       │   └── resources/
│   │       │       └── google/
│   │       │           └── protobuf/
│   │       │               ├── any.proto
│   │       │               ├── api.proto
│   │       │               ├── descriptor.proto
│   │       │               ├── duration.proto
│   │       │               ├── empty.proto
│   │       │               ├── field_mask.proto
│   │       │               ├── source_context.proto
│   │       │               ├── struct.proto
│   │       │               ├── timestamp.proto
│   │       │               ├── type.proto
│   │       │               └── wrappers.proto
│   │       └── test/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── db/
│   │           │           └── plexus/
│   │           │               └── interop/
│   │           │                   └── dsl/
│   │           │                       └── protobuf/
│   │           │                           └── tests/
│   │           │                               ├── ProtoLangImportResolverTest.xtend
│   │           │                               └── ProtoLangParsingTest.xtend
│   │           └── resources/
│   │               └── com/
│   │                   └── db/
│   │                       └── plexus/
│   │                           └── interop/
│   │                               └── dsl/
│   │                                   └── protobuf/
│   │                                       └── tests/
│   │                                           ├── enum_values_naming.proto
│   │                                           ├── example1.proto
│   │                                           ├── example2.proto
│   │                                           ├── field_label.proto
│   │                                           ├── option_declare.proto
│   │                                           ├── option_usage.proto
│   │                                           ├── scoping/
│   │                                           │   ├── scoping/
│   │                                           │   │   └── test3.proto
│   │                                           │   ├── test1.proto
│   │                                           │   └── test2.proto
│   │                                           └── subfolder/
│   │                                               └── example3.proto
│   └── proto-lang.ide/
│       ├── build.gradle
│       └── src/
│           └── main/
│               └── java/
│                   └── com/
│                       └── db/
│                           └── plexus/
│                               └── interop/
│                                   └── dsl/
│                                       └── protobuf/
│                                           ├── ide/
│                                           │   ├── ProtoLangIdeModule.xtend
│                                           │   └── ProtoLangIdeSetup.xtend
│                                           └── server/
│                                               ├── ProtoDebugServerLauncher.java
│                                               ├── ProtoLangServerModule.java
│                                               ├── ProtoLanguageServer.java
│                                               └── StdIOServerLauncher.java
├── gradle/
│   ├── maven-deployment.gradle
│   ├── source-layout.gradle
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── greeting-details.md
├── nodejs-broker-roadmap.md
├── protocol/
│   ├── plexus.interop.proto
│   ├── plexus.interop.transport.proto
│   └── plexus.proto
├── samples/
│   ├── broadcast/
│   │   └── registry/
│   │       └── interop/
│   │           └── samples/
│   │               ├── ip_telephony_app.interop
│   │               ├── ip_telephony_broadcast_service.proto
│   │               └── sales_app.interop
│   ├── build.gradle
│   ├── greeting/
│   │   ├── GenBrokerMetadata.cmd
│   │   ├── metadata/
│   │   │   ├── apps.json
│   │   │   └── interop.json
│   │   └── registry/
│   │       └── interop/
│   │           ├── electron_app_launcher.interop
│   │           └── samples/
│   │               ├── greeting_client.interop
│   │               ├── greeting_server.interop
│   │               ├── greeting_service.proto
│   │               └── web_greeting_server.interop
│   └── quick-start/
│       ├── GenBrokerMetadata.cmd
│       ├── metadata/
│       │   ├── apps.json
│       │   └── interop.json
│       └── registry/
│           ├── fx/
│           │   └── ccy_pair_rate_service.proto
│           ├── interop/
│           │   └── electron_app_launcher.interop
│           ├── vendor_a/
│           │   └── fx/
│           │       ├── ccy_pair_rate_provider.interop
│           │       └── web_ccy_pair_rate_provider.interop
│           └── vendor_b/
│               └── fx/
│                   ├── ccy_pair_rate_viewer.interop
│                   └── web_ccy_pair_rate_viewer.interop
├── settings.gradle
└── web/
    ├── .ci-npmrc-tpl
    ├── .ci-publish-npmrc-tpl
    ├── .gitignore
    ├── .yarnrc
    ├── README.md
    ├── build.gradle
    ├── configs/
    │   └── tslint.json
    ├── lerna.json
    ├── package.json
    ├── packages/
    │   ├── broker/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── preprocessor.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── AsyncHandler.ts
    │   │   │   ├── api/
    │   │   │   │   ├── AppLifeCycleConfig.ts
    │   │   │   │   ├── CrossDomainEventBusProvider.ts
    │   │   │   │   ├── CrossDomainHostBuilder.ts
    │   │   │   │   ├── CrossDomainHostEntryPoint.ts
    │   │   │   │   ├── WebBrokerConnectionBuilder.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── broker/
    │   │   │   │   ├── AuthenticationHandler.ts
    │   │   │   │   ├── Broker.ts
    │   │   │   │   ├── ClientConnectionProcessor.ts
    │   │   │   │   ├── ClientRequestProcessor.ts
    │   │   │   │   ├── DiscoveryRequestHandler.ts
    │   │   │   │   ├── InvocationRequestHandler.ts
    │   │   │   │   └── TasksTracker.ts
    │   │   │   ├── bus/
    │   │   │   │   ├── Event.ts
    │   │   │   │   ├── EventBus.ts
    │   │   │   │   ├── FallbackEventBus.ts
    │   │   │   │   ├── cross/
    │   │   │   │   │   ├── CrossDomainBusConfig.ts
    │   │   │   │   │   ├── CrossDomainEventBus.ts
    │   │   │   │   │   ├── host/
    │   │   │   │   │   │   ├── CrossDomainHost.ts
    │   │   │   │   │   │   ├── CrossDomainHostConfig.ts
    │   │   │   │   │   │   ├── HostMessageEvent.ts
    │   │   │   │   │   │   └── HostState.ts
    │   │   │   │   │   ├── index.ts
    │   │   │   │   │   └── model/
    │   │   │   │   │       ├── IFrameHostMessage.ts
    │   │   │   │   │       ├── MessageType.ts
    │   │   │   │   │       ├── PublishRequest.ts
    │   │   │   │   │       ├── ResponseType.ts
    │   │   │   │   │       └── SubscribeRequest.ts
    │   │   │   │   ├── index.ts
    │   │   │   │   └── same/
    │   │   │   │       ├── BroadCastChannelEventBus.ts
    │   │   │   │       └── JStorageEventBus.ts
    │   │   │   ├── index.ts
    │   │   │   ├── launcher/
    │   │   │   │   ├── AppLaunchRequest.ts
    │   │   │   │   ├── AppLaunchResponse.ts
    │   │   │   │   ├── AppLauncher.ts
    │   │   │   │   ├── AppLauncherRegistry.ts
    │   │   │   │   ├── LaunchInvocationContext.ts
    │   │   │   │   ├── UrlWebAppLauncher.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── lifecycle/
    │   │   │   │   ├── AppLifeCycleManager.ts
    │   │   │   │   ├── ApplicationConnection.ts
    │   │   │   │   ├── ApplicationConnectionDescriptor.ts
    │   │   │   │   └── ApplicationDescriptor.ts
    │   │   │   ├── peers/
    │   │   │   │   ├── ActionType.ts
    │   │   │   │   ├── PeerAppLifeCycleManager.ts
    │   │   │   │   ├── PeerConnectionsService.ts
    │   │   │   │   ├── PeerProxyConnection.ts
    │   │   │   │   ├── PeerProxyTransportChannel.ts
    │   │   │   │   ├── PeerServerConnectionFactory.ts
    │   │   │   │   ├── ProxyAuthenticationHandler.ts
    │   │   │   │   ├── StreamingInvocationClient.ts
    │   │   │   │   ├── actions/
    │   │   │   │   │   ├── ChannelRequest.ts
    │   │   │   │   │   ├── CloseChannelRequest.ts
    │   │   │   │   │   ├── CloseChannelResponse.ts
    │   │   │   │   │   ├── CreateChannelResponse.ts
    │   │   │   │   │   ├── RemoteActions.ts
    │   │   │   │   │   └── SendMessageRequest.ts
    │   │   │   │   ├── events/
    │   │   │   │   │   ├── AppConnectionHeartBit.ts
    │   │   │   │   │   └── EventType.ts
    │   │   │   │   ├── host/
    │   │   │   │   │   ├── HostConnectionFactory.ts
    │   │   │   │   │   └── HostTransportConnection.ts
    │   │   │   │   └── remote/
    │   │   │   │       ├── EventBasedRequest.ts
    │   │   │   │       ├── EventBusRemoteBrokerService.ts
    │   │   │   │       ├── RemoteActionResult.ts
    │   │   │   │       ├── RemoteActionStatus.ts
    │   │   │   │       └── RemoteBrokerService.ts
    │   │   │   ├── storage/
    │   │   │   │   └── Storage.ts
    │   │   │   ├── transport/
    │   │   │   │   └── MultiSourcesServerConnectionFactory.ts
    │   │   │   └── util/
    │   │   │       └── Types.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── ccy-pair-rate-provider/
    │   │   ├── gen-client.cmd
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── RateService.ts
    │   │   │   ├── gen/
    │   │   │   │   ├── WebCcyPairRateProviderGeneratedClient.ts
    │   │   │   │   ├── plexus-messages.d.ts
    │   │   │   │   └── plexus-messages.js
    │   │   │   ├── index.ts
    │   │   │   └── views/
    │   │   │       └── index.html
    │   │   └── tsconfig.json
    │   ├── ccy-pair-rate-viewer/
    │   │   ├── gen-client.cmd
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── gen/
    │   │   │   │   ├── WebCcyPairRateViewerGeneratedClient.ts
    │   │   │   │   ├── plexus-messages.d.ts
    │   │   │   │   └── plexus-messages.js
    │   │   │   ├── index.ts
    │   │   │   └── views/
    │   │   │       └── index.html
    │   │   └── tsconfig.json
    │   ├── cli/
    │   │   ├── .gitignore
    │   │   ├── .npmignore
    │   │   ├── .vscode/
    │   │   │   ├── launch.json
    │   │   │   └── tasks.json
    │   │   ├── dev-examples.md
    │   │   ├── install.js
    │   │   ├── package.json
    │   │   ├── plexus.js
    │   │   ├── src/
    │   │   │   ├── commands/
    │   │   │   │   ├── BaseCommand.ts
    │   │   │   │   ├── BaseJavaGenCommand.ts
    │   │   │   │   ├── Command.ts
    │   │   │   │   ├── DefaultOptions.ts
    │   │   │   │   ├── GenCSharpCommand.ts
    │   │   │   │   ├── GenJsonCommand.ts
    │   │   │   │   ├── GenProtoCommand.ts
    │   │   │   │   ├── GenTsCommand.ts
    │   │   │   │   ├── ListMetaFilesCommand.ts
    │   │   │   │   ├── Option.ts
    │   │   │   │   ├── ValidateMetadataCommand.ts
    │   │   │   │   ├── ValidateMetadataPatchCommand.ts
    │   │   │   │   ├── commands.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── common/
    │   │   │   │   ├── download.ts
    │   │   │   │   ├── files.ts
    │   │   │   │   ├── java.ts
    │   │   │   │   ├── process.ts
    │   │   │   │   ├── progress.ts
    │   │   │   │   ├── protoJs.ts
    │   │   │   │   └── protoc.ts
    │   │   │   ├── index.ts
    │   │   │   ├── install.ts
    │   │   │   └── typings.d.ts
    │   │   ├── tests/
    │   │   │   ├── approved/
    │   │   │   │   ├── generated-cs-client.approved.txt
    │   │   │   │   ├── generated-cs-messages.approved.txt
    │   │   │   │   ├── generated-cs-options.approved.txt
    │   │   │   │   ├── generated-cs-service.approved.txt
    │   │   │   │   ├── generated-json.approved.txt
    │   │   │   │   ├── generated-ts-client.approved.txt
    │   │   │   │   ├── generated-ts-definitions.approved.txt
    │   │   │   │   └── generated-ts-messages.approved.txt
    │   │   │   ├── commands/
    │   │   │   │   ├── BaseCommand.spec.ts
    │   │   │   │   ├── GenCSharpCommand.spec.ts
    │   │   │   │   ├── GenJsonCommand.spec.ts
    │   │   │   │   ├── GetTsCommand.spec.ts
    │   │   │   │   ├── ListMetaFilesCommand.spec.ts
    │   │   │   │   ├── ValidateMetadataCommand.spec.ts
    │   │   │   │   ├── ValidateMetatadaPatchCommand.spec.ts
    │   │   │   │   └── setup.ts
    │   │   │   ├── files.spec.ts
    │   │   │   └── protoJs.spec.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── client/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── client/
    │   │   │   │   ├── ClientDtoUtils.ts
    │   │   │   │   ├── api/
    │   │   │   │   │   ├── AnonymousSubscription.ts
    │   │   │   │   │   ├── BaseInvocationClientImpl.ts
    │   │   │   │   │   ├── DelegateInvocationObserver.ts
    │   │   │   │   │   ├── InvocationClient.ts
    │   │   │   │   │   ├── LoggingInvocationObserver.ts
    │   │   │   │   │   ├── ValueHandler.ts
    │   │   │   │   │   ├── container/
    │   │   │   │   │   │   ├── ConnectionDetails.ts
    │   │   │   │   │   │   ├── ConnectionDetailsService.ts
    │   │   │   │   │   │   ├── ContainerAwareClientAPIBuilder.ts
    │   │   │   │   │   │   ├── DefaultConnectionDetailsService.ts
    │   │   │   │   │   │   ├── WsConnectionDetails.ts
    │   │   │   │   │   │   └── index.ts
    │   │   │   │   │   ├── generic/
    │   │   │   │   │   │   ├── ClientApiBuilder.ts
    │   │   │   │   │   │   ├── GenericClientApi.ts
    │   │   │   │   │   │   ├── GenericClientApiBase.ts
    │   │   │   │   │   │   ├── GenericClientApiBuilder.ts
    │   │   │   │   │   │   ├── GenericClientApiImpl.ts
    │   │   │   │   │   │   ├── GenericInvocationsHost.ts
    │   │   │   │   │   │   ├── InvocationExecutor.ts
    │   │   │   │   │   │   ├── handlers/
    │   │   │   │   │   │   │   ├── InvocationHandlerConverter.ts
    │   │   │   │   │   │   │   ├── InvocationHandlersRegistry.ts
    │   │   │   │   │   │   │   ├── index.ts
    │   │   │   │   │   │   │   ├── streaming/
    │   │   │   │   │   │   │   │   ├── BidiStreamingInvocationHandler.ts
    │   │   │   │   │   │   │   │   ├── ServerStreamingInvocationHandler.ts
    │   │   │   │   │   │   │   │   ├── StreamingInvocationClient.ts
    │   │   │   │   │   │   │   │   ├── StreamingInvocationClientImpl.ts
    │   │   │   │   │   │   │   │   ├── StreamingInvocationClientInternal.ts
    │   │   │   │   │   │   │   │   ├── StreamingInvocationHost.ts
    │   │   │   │   │   │   │   │   ├── converters.ts
    │   │   │   │   │   │   │   │   └── index.ts
    │   │   │   │   │   │   │   └── unary/
    │   │   │   │   │   │   │       ├── UnaryInvocationHandler.ts
    │   │   │   │   │   │   │       ├── converters.ts
    │   │   │   │   │   │   │       └── index.ts
    │   │   │   │   │   │   ├── index.ts
    │   │   │   │   │   │   └── internal/
    │   │   │   │   │   │       ├── InternalActionInvoker.ts
    │   │   │   │   │   │       ├── InternalGenericClientApi.ts
    │   │   │   │   │   │       └── index.ts
    │   │   │   │   │   └── index.ts
    │   │   │   │   ├── generic/
    │   │   │   │   │   ├── AcceptedInvocation.ts
    │   │   │   │   │   ├── BaseInvocation.ts
    │   │   │   │   │   ├── GenericClient.ts
    │   │   │   │   │   ├── GenericClientFactory.ts
    │   │   │   │   │   ├── GenericClientImpl.ts
    │   │   │   │   │   ├── GenericInvocation.ts
    │   │   │   │   │   ├── Invocation.ts
    │   │   │   │   │   ├── InvocationChannelObserver.ts
    │   │   │   │   │   ├── InvocationObserver.ts
    │   │   │   │   │   ├── InvocationObserverConverter.ts
    │   │   │   │   │   ├── InvocationState.ts
    │   │   │   │   │   ├── RequestedDiscoveredInvocation.ts
    │   │   │   │   │   ├── RequestedInvocation.ts
    │   │   │   │   │   ├── SingleMessageRequst.ts
    │   │   │   │   │   └── index.ts
    │   │   │   │   └── index.ts
    │   │   │   └── index.ts
    │   │   ├── tests/
    │   │   │   ├── BufferedInvocationObserver.ts
    │   │   │   ├── LogInvocationObserver.ts
    │   │   │   ├── client/
    │   │   │   │   ├── DefaultConnectionDetailsService.spec.ts
    │   │   │   │   ├── GenericClient.spec.ts
    │   │   │   │   ├── GenericClientApi.spec.ts
    │   │   │   │   ├── GenericInvocationHost.spec.ts
    │   │   │   │   ├── Invocation.spec.ts
    │   │   │   │   ├── WsConnectionDetails.spec.ts
    │   │   │   │   └── client-mocks.ts
    │   │   │   └── utils.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── client-api/
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── MethodInvocationContext.ts
    │   │   │   ├── dto/
    │   │   │   │   ├── ActionReference.ts
    │   │   │   │   ├── BasicInvocationInfo.ts
    │   │   │   │   ├── ClientConnectRequest.ts
    │   │   │   │   ├── Completion.ts
    │   │   │   │   ├── ConsumedService.ts
    │   │   │   │   ├── DiscoveredMethod.ts
    │   │   │   │   ├── DiscoveredService.ts
    │   │   │   │   ├── DiscoveredServiceMethod.ts
    │   │   │   │   ├── DiscoveryMode.ts
    │   │   │   │   ├── GenericRequest.ts
    │   │   │   │   ├── HostInvocationInfo.ts
    │   │   │   │   ├── MethodDiscoveryRequest.ts
    │   │   │   │   ├── MethodDiscoveryResponse.ts
    │   │   │   │   ├── MethodType.ts
    │   │   │   │   ├── Option.ts
    │   │   │   │   ├── ProvidedMethodReference.ts
    │   │   │   │   ├── ProvidedServiceReference.ts
    │   │   │   │   ├── RemoteInvocationInfo.ts
    │   │   │   │   ├── ServiceDiscoveryRequest.ts
    │   │   │   │   ├── ServiceDiscoveryResponse.ts
    │   │   │   │   ├── ServiceInfo.ts
    │   │   │   │   └── index.ts
    │   │   │   └── index.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── common/
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── PlexusFeatures.ts
    │   │   │   ├── RetryConfig.ts
    │   │   │   ├── cache/
    │   │   │   │   ├── Cache.ts
    │   │   │   │   ├── CacheEntry.ts
    │   │   │   │   ├── CacheEntryDescriptor.ts
    │   │   │   │   ├── InMemoryCache.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   ├── logger/
    │   │   │   │   ├── DelegatingLogger.ts
    │   │   │   │   ├── Logger.ts
    │   │   │   │   ├── LoggerBase.ts
    │   │   │   │   ├── LoggerFactory.ts
    │   │   │   │   ├── PrefixedLogger.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── rx/
    │   │   │   │   ├── AnonymousSubscription.ts
    │   │   │   │   ├── BufferedObserver.ts
    │   │   │   │   ├── ConversionObserver.ts
    │   │   │   │   ├── Observer.ts
    │   │   │   │   ├── Subscription.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── util/
    │   │   │   │   ├── Arrays.ts
    │   │   │   │   ├── ExtendedArray.ts
    │   │   │   │   ├── GUID.ts
    │   │   │   │   ├── async/
    │   │   │   │   │   ├── AsyncHelper.ts
    │   │   │   │   │   ├── CancellationToken.ts
    │   │   │   │   │   ├── ReadOnlyCancellationToken.ts
    │   │   │   │   │   ├── ReadWriteCancellationToken.ts
    │   │   │   │   │   ├── SequencedExecutor.ts
    │   │   │   │   │   ├── index.ts
    │   │   │   │   │   └── promises.ts
    │   │   │   │   ├── collections/
    │   │   │   │   │   ├── BlockingQueue.ts
    │   │   │   │   │   ├── ExtendedMap.ts
    │   │   │   │   │   ├── LimitedBufferQueue.ts
    │   │   │   │   │   ├── index.ts
    │   │   │   │   │   └── map.ts
    │   │   │   │   ├── dom/
    │   │   │   │   │   └── DomUtils.ts
    │   │   │   │   ├── index.ts
    │   │   │   │   ├── js/
    │   │   │   │   │   └── ObjectUtils.ts
    │   │   │   │   ├── once.ts
    │   │   │   │   ├── state/
    │   │   │   │   │   ├── StateMaschine.ts
    │   │   │   │   │   ├── StateMaschineBase.ts
    │   │   │   │   │   └── index.ts
    │   │   │   │   ├── time/
    │   │   │   │   │   └── TimeUtils.ts
    │   │   │   │   ├── types.ts
    │   │   │   │   ├── unique.ts
    │   │   │   │   └── url/
    │   │   │   │       └── UrlParamsProvider.ts
    │   │   │   └── ws/
    │   │   │       └── detect.ts
    │   │   ├── tests/
    │   │   │   ├── cache/
    │   │   │   │   └── InMemoryCache.spec.ts
    │   │   │   ├── logger/
    │   │   │   │   └── LoggerFactory.spec.ts
    │   │   │   └── util/
    │   │   │       ├── Arrays.spec.ts
    │   │   │       ├── AsyncHelper.spec.ts
    │   │   │       ├── BlockingQueue.spec.ts
    │   │   │       ├── ExtendedArray.spec.ts
    │   │   │       ├── LimitedBufferQueue.spec.ts
    │   │   │       ├── SequencedExecutor.spec.ts
    │   │   │       ├── StateMaschineBase.spec.ts
    │   │   │       ├── map.spec.ts
    │   │   │       └── promises.spec.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── common-api-impl/
    │   │   ├── .npmignore
    │   │   ├── README.md
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── PartialPeerDescriptor.ts
    │   │   │   ├── PlexusInteropPeer.ts
    │   │   │   ├── PlexusInteropPlatform.ts
    │   │   │   ├── actions/
    │   │   │   │   ├── DiscoverMethodHandler.ts
    │   │   │   │   ├── DiscoverMethodsHandler.ts
    │   │   │   │   ├── InvokeHandler.ts
    │   │   │   │   └── SubscribeHandler.ts
    │   │   │   ├── api/
    │   │   │   │   ├── InteropPlatformFactory.ts
    │   │   │   │   ├── client-api.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   ├── listeners.ts
    │   │   │   ├── metadata.ts
    │   │   │   ├── registration.ts
    │   │   │   └── types.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── e2e/
    │   │   ├── gen-metadata.cmd
    │   │   ├── karma.conf.js
    │   │   ├── metadata/
    │   │   │   ├── apps.json
    │   │   │   ├── interop/
    │   │   │   │   └── plexus/
    │   │   │   │       └── interop/
    │   │   │   │           └── testing/
    │   │   │   │               ├── echo_client.interop
    │   │   │   │               ├── echo_server.interop
    │   │   │   │               ├── echo_service.proto
    │   │   │   │               └── test_app_launcher.interop
    │   │   │   └── interop.json
    │   │   ├── package.json
    │   │   ├── scripts/
    │   │   │   ├── browserify-all.js
    │   │   │   ├── coverage.js
    │   │   │   ├── file-utils.js
    │   │   │   ├── karma-preprocessor.js
    │   │   │   ├── native-broker-launcher.js
    │   │   │   ├── native-e2e-tests-launcher.js
    │   │   │   └── web-e2e-tests-launcher.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── echo/
    │   │   │   │   ├── client/
    │   │   │   │   │   ├── EchoClientGeneratedClient.ts
    │   │   │   │   │   ├── plexus-messages.d.ts
    │   │   │   │   │   └── plexus-messages.js
    │   │   │   │   └── server/
    │   │   │   │       ├── EchoServerGeneratedClient.ts
    │   │   │   │       ├── plexus-messages.d.ts
    │   │   │   │       └── plexus-messages.js
    │   │   │   ├── polyfills.ts
    │   │   │   └── views/
    │   │   │       └── proxyHost.html
    │   │   ├── tests/
    │   │   │   ├── common/
    │   │   │   │   ├── BenchmarkResult.ts
    │   │   │   │   ├── ClientsSetup.ts
    │   │   │   │   ├── ConnectionProvider.ts
    │   │   │   │   ├── ConnectionSetup.ts
    │   │   │   │   ├── RawMetadata.ts
    │   │   │   │   ├── TestCrossDomainHost.ts
    │   │   │   │   ├── TransportsSetup.ts
    │   │   │   │   └── utils.ts
    │   │   │   ├── echo/
    │   │   │   │   ├── BaseEchoTest.ts
    │   │   │   │   ├── BidiStreamingTests.ts
    │   │   │   │   ├── ClientConnectivityTests.ts
    │   │   │   │   ├── ClientStreamingHandler.ts
    │   │   │   │   ├── ClientStreamingTests.ts
    │   │   │   │   ├── DiscoveryTests.ts
    │   │   │   │   ├── DynamicInvocationTests.ts
    │   │   │   │   ├── EchoClientBenchmark.ts
    │   │   │   │   ├── NopServiceHandler.ts
    │   │   │   │   ├── PointToPointInvocationTests.ts
    │   │   │   │   ├── ServerStreamingHandler.ts
    │   │   │   │   ├── ServerStreamingInvocationTests.ts
    │   │   │   │   └── UnaryServiceHandler.ts
    │   │   │   ├── native/
    │   │   │   │   ├── WebSocketClientConnectivity.spec.ts
    │   │   │   │   ├── WebSocketCommonApi.spec.ts
    │   │   │   │   ├── WebSocketDiscovery.spec.ts
    │   │   │   │   ├── WebSocketDynamicInvocationTests.spec.ts
    │   │   │   │   ├── WebSocketMetadataLoader.spec.ts
    │   │   │   │   ├── WebSocketPlainDtoTests.spec.ts
    │   │   │   │   ├── WebSocketPointToPoint.spec.ts
    │   │   │   │   ├── WebSocketStreaming.spec.ts
    │   │   │   │   └── benchmarks/
    │   │   │   │       └── WebSocketTransportBenchmark.spec.ts
    │   │   │   └── web/
    │   │   │       ├── WebBrokerClientConnectivity.spec.ts
    │   │   │       ├── WebBrokerDiscovery.spec.ts
    │   │   │       ├── WebBrokerPointToPoint.spec.ts
    │   │   │       ├── WebBrokerStreaming.spec.ts
    │   │   │       └── benchmarks/
    │   │   │           └── WebBrokerTransportBenchmark.spec.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── electron-launcher/
    │   │   ├── ElectronAppLauncher.cmd
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── index.ts
    │   │   │   └── launcher/
    │   │   │       ├── ElectronAppLauncher.ts
    │   │   │       ├── Main.ts
    │   │   │       ├── client/
    │   │   │       │   └── ElectronAppLauncherGeneratedClient.ts
    │   │   │       ├── gen/
    │   │   │       │   ├── plexus-messages.d.ts
    │   │   │       │   └── plexus-messages.js
    │   │   │       └── logger/
    │   │   │           └── FileLogger.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── io/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── preprocessor.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── api/
    │   │   │   │   ├── BinaryMarshaller.ts
    │   │   │   │   ├── BinaryMarshallerProvider.ts
    │   │   │   │   ├── ExtendedMarshaller.ts
    │   │   │   │   ├── Marshaller.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── dynamic/
    │   │   │   │   ├── DynamicBinaryMarshallerProvider.ts
    │   │   │   │   ├── DynamicBinaryProtoMarshaller.ts
    │   │   │   │   ├── DynamicProtoMarshaller.ts
    │   │   │   │   ├── DynamicProtoMarshallerFactory.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   └── static/
    │   │   │       ├── ProtoMarshallerProvider.ts
    │   │   │       └── index.ts
    │   │   ├── tests/
    │   │   │   ├── dynamic/
    │   │   │   │   └── DynamicMarshallerFactory.spec.ts
    │   │   │   └── static/
    │   │   │       └── ProtoMarshallerProvider.spec.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── metadata/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── preprocessor.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── apps/
    │   │   │   │   ├── AppRegistryProvider.ts
    │   │   │   │   ├── AppRegistryService.ts
    │   │   │   │   ├── json/
    │   │   │   │   │   ├── JsonAppRegistryProvider.ts
    │   │   │   │   │   └── UrlAppRegistryProvider.ts
    │   │   │   │   └── model/
    │   │   │   │       ├── AppRegistry.ts
    │   │   │   │       ├── Application.ts
    │   │   │   │       └── index.ts
    │   │   │   ├── index.ts
    │   │   │   └── interop/
    │   │   │       ├── InteropRegistryProvider.ts
    │   │   │       ├── InteropRegistryService.ts
    │   │   │       ├── apps/
    │   │   │       │   └── Application.ts
    │   │   │       ├── json/
    │   │   │       │   ├── ApplicationDto.ts
    │   │   │       │   ├── ConsumedMethodDto.ts
    │   │   │       │   ├── ConsumedServiceDto.ts
    │   │   │       │   ├── EnumDto.ts
    │   │   │       │   ├── Field.ts
    │   │   │       │   ├── Fields.ts
    │   │   │       │   ├── JsonInteropRegistryProvider.ts
    │   │   │       │   ├── MessageDto.ts
    │   │   │       │   ├── MessagesNamespace.ts
    │   │   │       │   ├── MethodDto.ts
    │   │   │       │   ├── MethodTypeDto.ts
    │   │   │       │   ├── OptionDto.ts
    │   │   │       │   ├── Options.ts
    │   │   │       │   ├── ProvidedMethodDto.ts
    │   │   │       │   ├── ProvidedServiceDto.ts
    │   │   │       │   ├── RegistryDto.ts
    │   │   │       │   ├── ServiceDto.ts
    │   │   │       │   ├── UrlInteropRegistryProvider.ts
    │   │   │       │   └── Values.ts
    │   │   │       └── model/
    │   │   │           ├── Application.ts
    │   │   │           ├── ConsumedMethod.ts
    │   │   │           ├── ConsumedMethodReference.ts
    │   │   │           ├── ConsumedService.ts
    │   │   │           ├── ConsumedServiceReference.ts
    │   │   │           ├── Enum.ts
    │   │   │           ├── Field.ts
    │   │   │           ├── InteropRegistry.ts
    │   │   │           ├── MatchPattern.ts
    │   │   │           ├── MatchPatternFactory.ts
    │   │   │           ├── Message.ts
    │   │   │           ├── Method.ts
    │   │   │           ├── MethodType.ts
    │   │   │           ├── Option.ts
    │   │   │           ├── ProvidedMethod.ts
    │   │   │           ├── ProvidedMethodReference.ts
    │   │   │           ├── ProvidedService.ts
    │   │   │           ├── ProvidedServiceReference.ts
    │   │   │           ├── Service.ts
    │   │   │           └── index.ts
    │   │   ├── tests/
    │   │   │   └── json/
    │   │   │       ├── InteropRegistryService.spec.ts
    │   │   │       ├── JsonAppRegistryProvider.spec.ts
    │   │   │       ├── JsonRegistryProvider.spec.ts
    │   │   │       ├── test-apps.json
    │   │   │       └── test-interop.json
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── protocol/
    │   │   ├── gen-protocol.cmd
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── dto/
    │   │   │   │   ├── CancelledCompletion.ts
    │   │   │   │   ├── ClientError.ts
    │   │   │   │   ├── ClientProtocolUtils.ts
    │   │   │   │   ├── Completion.ts
    │   │   │   │   ├── ErrorCompletion.ts
    │   │   │   │   ├── InvocationMetaInfo.ts
    │   │   │   │   ├── SuccessCompletion.ts
    │   │   │   │   ├── UniqueId.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── gen/
    │   │   │   │   └── .gitignore
    │   │   │   ├── index.ts
    │   │   │   └── util/
    │   │   │       └── ClientProtocolHelper.ts
    │   │   ├── tests/
    │   │   │   └── dto/
    │   │   │       └── UniqueId.spec.ts
    │   │   └── tsconfig.json
    │   ├── remote/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── preprocessor.js
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── http/
    │   │   │   │   ├── HttpDataLoader.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   └── ws/
    │   │   │       ├── WebSocketDataProvider.ts
    │   │   │       └── index.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── studio/
    │   │   ├── .angular-cli.json
    │   │   ├── .bootstraprc
    │   │   ├── .editorconfig
    │   │   ├── .gitignore
    │   │   ├── .vscode/
    │   │   │   └── launch.json
    │   │   ├── README.md
    │   │   ├── karma.conf.js
    │   │   ├── package.json
    │   │   ├── protractor.conf.js
    │   │   ├── src/
    │   │   │   ├── app/
    │   │   │   │   ├── app-list/
    │   │   │   │   │   ├── app-list.component.css
    │   │   │   │   │   ├── app-list.component.html
    │   │   │   │   │   └── app-list.component.ts
    │   │   │   │   ├── app-services/
    │   │   │   │   │   ├── app-services.component.css
    │   │   │   │   │   ├── app-services.component.html
    │   │   │   │   │   └── app-services.component.ts
    │   │   │   │   ├── app.component.css
    │   │   │   │   ├── app.component.html
    │   │   │   │   ├── app.component.ts
    │   │   │   │   ├── app.module.ts
    │   │   │   │   ├── app.routing.ts
    │   │   │   │   ├── consumed-service/
    │   │   │   │   │   ├── consumed-service.component.css
    │   │   │   │   │   ├── consumed-service.component.html
    │   │   │   │   │   └── consumed-service.component.ts
    │   │   │   │   ├── header/
    │   │   │   │   │   ├── header.component.css
    │   │   │   │   │   ├── header.component.html
    │   │   │   │   │   └── header.component.ts
    │   │   │   │   ├── metadata-loader/
    │   │   │   │   │   ├── metadata-loader.component.css
    │   │   │   │   │   ├── metadata-loader.component.html
    │   │   │   │   │   └── metadata-loader.component.ts
    │   │   │   │   ├── provided-service/
    │   │   │   │   │   ├── provided-service.component.css
    │   │   │   │   │   ├── provided-service.component.html
    │   │   │   │   │   └── provided-service.component.ts
    │   │   │   │   └── services/
    │   │   │   │       ├── AppUtils.ts
    │   │   │   │       ├── core/
    │   │   │   │       │   ├── DefaultMessageGenerator.spec.ts
    │   │   │   │       │   ├── DefaultMessageGenerator.ts
    │   │   │   │       │   ├── FieldNamesValidator.spec.ts
    │   │   │   │       │   ├── FieldNamesValidator.ts
    │   │   │   │       │   ├── GenericClientWrapper.ts
    │   │   │   │       │   ├── InteropClient.ts
    │   │   │   │       │   ├── InteropClientFactory.ts
    │   │   │   │       │   ├── InteropServiceFactory.ts
    │   │   │   │       │   ├── StringHandlers.ts
    │   │   │   │       │   ├── TransportConnectionFactory.ts
    │   │   │   │       │   ├── TransportConnectionProvider.ts
    │   │   │   │       │   └── invocation-utils.ts
    │   │   │   │       ├── effects/
    │   │   │   │       │   └── ConnectionEffects.ts
    │   │   │   │       ├── extensions/
    │   │   │   │       │   └── StudioExtensions.ts
    │   │   │   │       ├── reducers/
    │   │   │   │       │   ├── AlertsHandler.ts
    │   │   │   │       │   ├── ConnectionDetailsReducer.ts
    │   │   │   │       │   ├── PlexusReducers.ts
    │   │   │   │       │   └── TypedAction.ts
    │   │   │   │       ├── transport/
    │   │   │   │       │   ├── TransportConnectionFactory.ts
    │   │   │   │       │   └── TransportConnectionProvider.ts
    │   │   │   │       └── ui/
    │   │   │   │           ├── AppActions.ts
    │   │   │   │           ├── AppEffects.ts
    │   │   │   │           ├── AppModel.ts
    │   │   │   │           ├── ConnectionRequestParams.ts
    │   │   │   │           ├── RootReducers.ts
    │   │   │   │           ├── SubscriptionsRegistry.ts
    │   │   │   │           ├── filters.ts
    │   │   │   │           └── validators.ts
    │   │   │   ├── environments/
    │   │   │   │   ├── environment.prod.ts
    │   │   │   │   └── environment.ts
    │   │   │   ├── index.html
    │   │   │   ├── main.ts
    │   │   │   ├── polyfills.ts
    │   │   │   ├── setup-jest.ts
    │   │   │   ├── styles.css
    │   │   │   ├── test.ts
    │   │   │   ├── tsconfig.app.json
    │   │   │   ├── tsconfig.spec.json
    │   │   │   └── typings.d.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── transport-common/
    │   │   ├── .npmignore
    │   │   ├── package.json
    │   │   ├── setup-jasmine.js
    │   │   ├── src/
    │   │   │   ├── common/
    │   │   │   │   ├── BaseChannel.ts
    │   │   │   │   ├── BufferedObserver.ts
    │   │   │   │   ├── Channel.ts
    │   │   │   │   ├── ChannelObserver.ts
    │   │   │   │   ├── Defaults.ts
    │   │   │   │   ├── DelegateChannelObserver.ts
    │   │   │   │   ├── PlexusObserver.ts
    │   │   │   │   └── index.ts
    │   │   │   ├── index.ts
    │   │   │   └── transport/
    │   │   │       ├── ClientConnectionFactory.ts
    │   │   │       ├── ConnectionDetails.ts
    │   │   │       ├── DuplexConnectionFactory.ts
    │   │   │       ├── InMemoryConnectionFactory.ts
    │   │   │       ├── InMemoryFramedTransport.ts
    │   │   │       ├── ServerConnectionFactory.ts
    │   │   │       ├── TransportChannel.ts
    │   │   │       ├── TransportConnection.ts
    │   │   │       ├── frame/
    │   │   │       │   ├── BufferedReadFramedTransport.ts
    │   │   │       │   ├── BufferedTransportProxy.ts
    │   │   │       │   ├── ConnectableFramedTransport.ts
    │   │   │       │   ├── FrameHeader.ts
    │   │   │       │   ├── FramedTransport.ts
    │   │   │       │   ├── FramedTransportChannel.ts
    │   │   │       │   ├── FramedTransportConnection.ts
    │   │   │       │   ├── SafeMessageBuffer.ts
    │   │   │       │   ├── TransportFrameHandler.ts
    │   │   │       │   ├── TransportFrameListener.ts
    │   │   │       │   ├── index.ts
    │   │   │       │   └── model/
    │   │   │       │       ├── ChannelCloseFrame.ts
    │   │   │       │       ├── ChannelOpenFrame.ts
    │   │   │       │       ├── ConnectionCloseFrame.ts
    │   │   │       │       ├── ConnectionOpenFrame.ts
    │   │   │       │       ├── DataFrame.ts
    │   │   │       │       ├── Frame.ts
    │   │   │       │       ├── InternalMessagesConverter.ts
    │   │   │       │       ├── MessageFrame.ts
    │   │   │       │       ├── ServiceFrame.ts
    │   │   │       │       ├── index.ts
    │   │   │       │       └── util.ts
    │   │   │       └── index.ts
    │   │   ├── tests/
    │   │   │   ├── BufferedObserver.ts
    │   │   │   ├── LogObserver.ts
    │   │   │   ├── transport/
    │   │   │   │   ├── TestBufferedInMemoryFramedTransport.ts
    │   │   │   │   ├── TestInMemoryConnectionFactory.ts
    │   │   │   │   ├── UniqueId.spec.ts
    │   │   │   │   ├── frame/
    │   │   │   │   │   ├── ClientToServer.spec.ts
    │   │   │   │   │   ├── FramedTransportChannel.spec.ts
    │   │   │   │   │   ├── FramedTransportConnection.spec.ts
    │   │   │   │   │   ├── InternalMessagesConverter.spec.ts
    │   │   │   │   │   ├── SafeMessageBuffer.spec.ts
    │   │   │   │   │   └── util.ts
    │   │   │   │   ├── mocks/
    │   │   │   │   │   └── BufferedChannel.ts
    │   │   │   │   └── transport-mocks.ts
    │   │   │   └── utils.ts
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   ├── web-example/
    │   │   ├── package.json
    │   │   ├── src/
    │   │   │   ├── common/
    │   │   │   │   └── DomLogger.ts
    │   │   │   └── greeting/
    │   │   │       ├── server/
    │   │   │       │   ├── Main.ts
    │   │   │       │   ├── WebGreetingServerGeneratedClient.ts
    │   │   │       │   └── gen/
    │   │   │       │       ├── plexus-messages.d.ts
    │   │   │       │       └── plexus-messages.js
    │   │   │       └── views/
    │   │   │           └── greetingServer.html
    │   │   ├── tsconfig.json
    │   │   └── tslint.json
    │   └── websocket-transport/
    │       ├── .npmignore
    │       ├── package.json
    │       ├── setup-jasmine.js
    │       ├── src/
    │       │   ├── index.ts
    │       │   └── transport/
    │       │       ├── WebSocketConnectionFactory.ts
    │       │       ├── WebSocketFramedTransport.ts
    │       │       └── index.ts
    │       ├── tests/
    │       │   └── transports/
    │       │       └── WebSocketFramedTransport.spec.ts
    │       ├── tsconfig.json
    │       └── tslint.json
    └── scripts/
        ├── replace-auth-vars.js
        └── replace-lock-registry.js
Download .txt
Showing preview only (745K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7123 symbols across 1019 files)

FILE: desktop/src/Plexus.Channels/ChannelExtensions.cs
  class ChannelExtensions (line 24) | public static class ChannelExtensions
    method ChannelExtensions (line 28) | static ChannelExtensions()
    method CompleteAsync (line 35) | public static async Task CompleteAsync<T>(this ITerminatableWritableCh...
    method TerminateAsync (line 41) | public static async Task TerminateAsync<T>(this ITerminatableWritableC...
    method WriteAsync (line 47) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method WriteOrDisposeAsync (line 57) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryWriteAsync (line 72) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ReadAsync (line 85) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryReadAsync (line 96) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Terminate (line 109) | public static void Terminate<T>(
    method Complete (line 119) | public static void Complete<T>(this ITerminatableWritableChannel<T> ch...
    method IsCompleted (line 127) | public static bool IsCompleted<T>(this IReadableChannel<T> channel)
    method IsCompleted (line 132) | public static bool IsCompleted<T>(this ITerminatableWritableChannel<T>...
    method DisposeRemainingItemsAsync (line 137) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method DisposeBufferedItems (line 144) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ConsumeBufferedItems (line 151) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ConsumeAsync (line 161) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ConsumeAsync (line 180) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method FirstAsync (line 216) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method FirstAsync (line 235) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: desktop/src/Plexus.Common.Contracts/AppConnectionDescriptor.cs
  class AppConnectionDescriptor (line 19) | public sealed class AppConnectionDescriptor
    method AppConnectionDescriptor (line 29) | public AppConnectionDescriptor(
    method Equals (line 41) | public override bool Equals(object obj)
    method GetHashCode (line 48) | public override int GetHashCode()
    method ToString (line 54) | public override string ToString()

FILE: desktop/src/Plexus.Common.Contracts/BrokerFeatures.cs
  type BrokerFeatures (line 21) | [Flags]

FILE: desktop/src/Plexus.Common.Contracts/Channels/ChannelWriteTimeoutException.cs
  class ChannelWriteTimeoutException (line 21) | public sealed class ChannelWriteTimeoutException : Exception
    method ChannelWriteTimeoutException (line 23) | public ChannelWriteTimeoutException(TimeSpan timeout) : base(

FILE: desktop/src/Plexus.Common.Contracts/Channels/IChannel.cs
  type IChannel (line 19) | public interface IChannel<T>

FILE: desktop/src/Plexus.Common.Contracts/Channels/IReadableChannel.cs
  type IReadableChannel (line 22) | public interface IReadableChannel<T>
    method TryRead (line 26) | bool TryRead(out T item);
    method WaitReadAvailableAsync (line 28) | Task<bool> WaitReadAvailableAsync(CancellationToken cancellationToken ...

FILE: desktop/src/Plexus.Common.Contracts/Channels/ITerminatableWritableChannel.cs
  type ITerminatableWritableChannel (line 21) | public interface ITerminatableWritableChannel<in T> : IWritableChannel<T>
    method TryComplete (line 23) | bool TryComplete();
    method TryTerminate (line 25) | bool TryTerminate(Exception error = null);

FILE: desktop/src/Plexus.Common.Contracts/Channels/IWritableChannel.cs
  type IWritableChannel (line 22) | public interface IWritableChannel<in T>
    method TryWrite (line 26) | bool TryWrite(T item);
    method WaitWriteAvailableAsync (line 28) | Task<bool> WaitWriteAvailableAsync(CancellationToken cancellationToken...

FILE: desktop/src/Plexus.Common.Contracts/EnvironmentHelper.cs
  class EnvironmentHelper (line 23) | public static class EnvironmentHelper
    method GetBrokerWorkingDir (line 39) | public static string GetBrokerWorkingDir()
    method GetBrokerWorkingDirOrThrow (line 44) | public static string GetBrokerWorkingDirOrThrow()
    method GetAppInstanceId (line 50) | public static string GetAppInstanceId()
    method GetParentProcessId (line 55) | public static string GetParentProcessId()
    method GetPlexusTimeoutMultiplier (line 60) | public static double GetPlexusTimeoutMultiplier()
    method GetWebSocketAddress (line 67) | public static string GetWebSocketAddress()
    method GetWebSocketSecureAddress (line 72) | public static string GetWebSocketSecureAddress()
    method GetPipeAddress (line 77) | public static string GetPipeAddress()
    method GetBrokerFeatures (line 82) | public static BrokerFeatures GetBrokerFeatures()
    method GetLauncherAppInstanceId (line 91) | public static UniqueId? GetLauncherAppInstanceId()
    method GetCertificatePath (line 100) | public static string GetCertificatePath()
    method GetCertificatePassword (line 105) | public static string GetCertificatePassword()
    method GetCertificateKeyStorageFlags (line 110) | public static X509KeyStorageFlags GetCertificateKeyStorageFlags()
    method GetSslProtocols (line 119) | public static SslProtocols GetSslProtocols()

FILE: desktop/src/Plexus.Common.Contracts/Maybe.cs
  type Maybe (line 22) | public struct Maybe<T> : IEquatable<Maybe<T>>
    method Maybe (line 28) | public Maybe(T value)
    method GetValueOrDefault (line 58) | public T GetValueOrDefault()
    method GetValueOrDefault (line 63) | public T GetValueOrDefault(T defaultValue)
    method GetValueOrThrowException (line 68) | public T GetValueOrThrowException<TException>(TException exception) wh...
    method GetValueOrThrowException (line 77) | public T GetValueOrThrowException<TException>() where TException : Exc...
    method ToString (line 86) | public override string ToString()
    method Equals (line 91) | public override bool Equals(object obj)
    method Equals (line 96) | public bool Equals(Maybe<T> other)
    method GetHashCode (line 112) | public override int GetHashCode()

FILE: desktop/src/Plexus.Common.Contracts/Nothing.cs
  type Nothing (line 19) | public struct Nothing
    method Equals (line 23) | public override bool Equals(object obj)
    method GetHashCode (line 28) | public override int GetHashCode()
    method ToString (line 33) | public override string ToString()

FILE: desktop/src/Plexus.Common.Contracts/Pools/IPooledBuffer.cs
  type IPooledBuffer (line 19) | public interface IPooledBuffer : IPooledObject

FILE: desktop/src/Plexus.Common.Contracts/Pools/IPooledObject.cs
  type IPooledObject (line 21) | public interface IPooledObject : IDisposable
    method Retain (line 23) | void Retain();

FILE: desktop/src/Plexus.Common.Contracts/TransportType.cs
  type TransportType (line 19) | public enum TransportType

FILE: desktop/src/Plexus.Common.Contracts/UniqueId.cs
  type UniqueId (line 25) | [StructLayout(LayoutKind.Sequential)]
    method UniqueId (line 32) | private UniqueId(ulong hi, ulong lo)
    method Generate (line 53) | public static UniqueId Generate()
    method FromString (line 67) | public static UniqueId FromString(string value)
    method FromHiLo (line 73) | public static UniqueId FromHiLo(ulong hi, ulong lo)
    method ToString (line 78) | public override string ToString()
    method Reverse (line 83) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Convert (line 94) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method HexStringToByteArray (line 117) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetHexVal (line 135) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetLong (line 143) | private static ulong GetLong(byte[] bytes, int i)
    method Equals (line 163) | public bool Equals(UniqueId other)
    method Equals (line 168) | public override bool Equals(object obj)
    method GetHashCode (line 174) | public override int GetHashCode()

FILE: desktop/src/Plexus.Host/Internal/BrokerCliOptions.cs
  class StartCliOptions (line 22) | #if !NET45
  class BrokerCliOptions (line 37) | #if !NET45

FILE: desktop/src/Plexus.Host/Internal/BrokerProgram.cs
  class BrokerProgram (line 23) | internal sealed class BrokerProgram : IProgram
    method BrokerProgram (line 30) | public BrokerProgram(BrokerOptions options)
    method StartAsync (line 41) | public async Task<Task> StartAsync()
    method ShutdownAsync (line 52) | public async Task ShutdownAsync()

FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppConnectionDescriptor.msg.g.cs
  class AppConnectionDescriptorReflection (line 31) | internal static partial class AppConnectionDescriptorReflection {
    method AppConnectionDescriptorReflection (line 40) | static AppConnectionDescriptorReflection() {
  type TransportType (line 63) | internal enum TransportType {
  class AppConnectionDescriptor (line 73) | internal sealed partial class AppConnectionDescriptor : pb::IMessage<App...
    method AppConnectionDescriptor (line 96) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 102) | partial void OnConstruction();
    method AppConnectionDescriptor (line 104) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 114) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 168) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 174) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 190) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 204) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 210) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 239) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 264) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 286) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 313) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 353) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppLaunchMode.msg.g.cs
  class AppLaunchModeReflection (line 31) | internal static partial class AppLaunchModeReflection {
    method AppLaunchModeReflection (line 40) | static AppLaunchModeReflection() {
  type AppLaunchMode (line 55) | internal enum AppLaunchMode {

FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppLifecycleService.msg.g.cs
  class AppLifecycleServiceReflection (line 31) | internal static partial class AppLifecycleServiceReflection {
    method AppLifecycleServiceReflection (line 40) | static AppLifecycleServiceReflection() {
  type InvocationResult (line 125) | internal enum InvocationResult {
  class ResolveAppRequest (line 134) | internal sealed partial class ResolveAppRequest : pb::IMessage<ResolveAp...
    method ResolveAppRequest (line 157) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 163) | partial void OnConstruction();
    method ResolveAppRequest (line 165) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 173) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 203) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 209) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 223) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 235) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 241) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 262) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 279) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 295) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 310) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 336) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ResolveAppResponse (line 360) | internal sealed partial class ResolveAppResponse : pb::IMessage<ResolveA...
    method ResolveAppResponse (line 383) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 389) | partial void OnConstruction();
    method ResolveAppResponse (line 391) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 400) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 442) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 448) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 463) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 476) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 482) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 507) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 528) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 547) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 571) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 607) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppLifecycleEvent (line 641) | internal sealed partial class AppLifecycleEvent : pb::IMessage<AppLifecy...
    method AppLifecycleEvent (line 664) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 670) | partial void OnConstruction();
    method AppLifecycleEvent (line 672) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 690) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    type EventOneofCase (line 734) | public enum EventOneofCase {
    method ClearEvent (line 747) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 754) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 760) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 776) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 790) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 796) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 821) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 842) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 861) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 891) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 936) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class InvocationEvent (line 979) | internal sealed partial class InvocationEvent : pb::IMessage<InvocationE...
    method InvocationEvent (line 1002) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1008) | partial void OnConstruction();
    method InvocationEvent (line 1010) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1025) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    type EventOneofCase (line 1057) | public enum EventOneofCase {
    method ClearEvent (line 1069) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1076) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1082) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1097) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1110) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1116) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1137) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1154) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1170) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1194) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1230) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppConnectedEvent (line 1264) | internal sealed partial class AppConnectedEvent : pb::IMessage<AppConnec...
    method AppConnectedEvent (line 1287) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1293) | partial void OnConstruction();
    method AppConnectedEvent (line 1295) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1302) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1320) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1326) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1339) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1350) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1356) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1373) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1386) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1399) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1414) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1439) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppDisconnectedEvent (line 1462) | internal sealed partial class AppDisconnectedEvent : pb::IMessage<AppDis...
    method AppDisconnectedEvent (line 1485) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1491) | partial void OnConstruction();
    method AppDisconnectedEvent (line 1493) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1500) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1518) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1524) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1537) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1548) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1554) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1571) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1584) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1597) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1612) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1637) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppConnectionErrorEvent (line 1660) | internal sealed partial class AppConnectionErrorEvent : pb::IMessage<App...
    method AppConnectionErrorEvent (line 1683) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1689) | partial void OnConstruction();
    method AppConnectionErrorEvent (line 1691) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1698) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1716) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1722) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1735) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1746) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1752) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1769) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1782) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1795) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1810) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1835) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class InvocationStartedEvent (line 1858) | internal sealed partial class InvocationStartedEvent : pb::IMessage<Invo...
    method InvocationStartedEvent (line 1881) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1887) | partial void OnConstruction();
    method InvocationStartedEvent (line 1889) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1896) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1914) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1920) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1933) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1944) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1950) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1967) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1980) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1993) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2008) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2033) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class InvocationFinishedEvent (line 2056) | internal sealed partial class InvocationFinishedEvent : pb::IMessage<Inv...
    method InvocationFinishedEvent (line 2079) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2085) | partial void OnConstruction();
    method InvocationFinishedEvent (line 2087) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2096) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2138) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2144) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2159) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2172) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2178) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2203) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2224) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2243) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2264) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2297) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class GetConnectionsRequest (line 2328) | internal sealed partial class GetConnectionsRequest : pb::IMessage<GetCo...
    method GetConnectionsRequest (line 2351) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2357) | partial void OnConstruction();
    method GetConnectionsRequest (line 2359) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2368) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2410) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2416) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2431) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2444) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2450) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2475) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2496) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2515) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2539) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2575) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class GetConnectionsResponse (line 2609) | internal sealed partial class GetConnectionsResponse : pb::IMessage<GetC...
    method GetConnectionsResponse (line 2632) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2638) | partial void OnConstruction();
    method GetConnectionsResponse (line 2640) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2647) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2664) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2670) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2683) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2694) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2700) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2714) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2724) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2735) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2745) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2767) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class GetConnectionsEvent (line 2787) | internal sealed partial class GetConnectionsEvent : pb::IMessage<GetConn...
    method GetConnectionsEvent (line 2810) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2816) | partial void OnConstruction();
    method GetConnectionsEvent (line 2818) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2834) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    type EventOneofCase (line 2877) | public enum EventOneofCase {
    method ClearEvent (line 2889) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2896) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2902) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2918) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2932) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2938) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2960) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2978) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2995) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 3020) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 3060) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Host/Internal/Generated/interop/AppLifecycleService.svc.g.cs
  class AppLifecycleService (line 31) | internal static partial class AppLifecycleService {
    method CreateDescriptor (line 42) | public static AppLifecycleService.Descriptor CreateDescriptor() {
    method CreateDescriptor (line 46) | public static AppLifecycleService.Descriptor CreateDescriptor(string a...
    type IResolveAppProxy (line 50) | public partial interface IResolveAppProxy {
      method ResolveApp (line 51) | IUnaryMethodCall<global::Plexus.Host.Internal.Generated.ResolveAppRe...
    type IGetLifecycleEventStreamProxy (line 54) | public partial interface IGetLifecycleEventStreamProxy {
      method GetLifecycleEventStream (line 55) | IServerStreamingMethodCall<global::Plexus.Host.Internal.Generated.Ap...
    type IGetInvocationEventStreamProxy (line 58) | public partial interface IGetInvocationEventStreamProxy {
      method GetInvocationEventStream (line 59) | IServerStreamingMethodCall<global::Plexus.Host.Internal.Generated.In...
    type IGetConnectionsProxy (line 62) | public partial interface IGetConnectionsProxy {
      method GetConnections (line 63) | IUnaryMethodCall<global::Plexus.Host.Internal.Generated.GetConnectio...
    type IGetConnectionsStreamProxy (line 66) | public partial interface IGetConnectionsStreamProxy {
      method GetConnectionsStream (line 67) | IServerStreamingMethodCall<global::Plexus.Host.Internal.Generated.Ge...
    type IResolveAppImpl (line 70) | public partial interface IResolveAppImpl {
      method ResolveApp (line 71) | Task<global::Plexus.Host.Internal.Generated.ResolveAppResponse> Reso...
    type IGetLifecycleEventStreamImpl (line 74) | public partial interface IGetLifecycleEventStreamImpl {
      method GetLifecycleEventStream (line 75) | Task GetLifecycleEventStream(global::Google.Protobuf.WellKnownTypes....
    type IGetInvocationEventStreamImpl (line 78) | public partial interface IGetInvocationEventStreamImpl {
      method GetInvocationEventStream (line 79) | Task GetInvocationEventStream(global::Google.Protobuf.WellKnownTypes...
    type IGetConnectionsImpl (line 82) | public partial interface IGetConnectionsImpl {
      method GetConnections (line 83) | Task<global::Plexus.Host.Internal.Generated.GetConnectionsResponse> ...
    type IGetConnectionsStreamImpl (line 86) | public partial interface IGetConnectionsStreamImpl {
      method GetConnectionsStream (line 87) | Task GetConnectionsStream(global::Plexus.Host.Internal.Generated.Get...
    class Descriptor (line 90) | public sealed partial class Descriptor {
      method Descriptor (line 98) | public Descriptor() {
      method Descriptor (line 106) | public Descriptor(string alias) {

FILE: desktop/src/Plexus.Host/Internal/Generated/interop/CommandLineTool.app.g.cs
  type ICommandLineToolClient (line 32) | internal partial interface ICommandLineToolClient: IClient {
  class CommandLineToolClient (line 36) | internal sealed partial class CommandLineToolClient: ClientBase, IComman...
    method CreateClientOptions (line 40) | private static ClientOptions CreateClientOptions(Func<ClientOptionsBui...
    method CommandLineToolClient (line 48) | public CommandLineToolClient(Func<ClientOptionsBuilder, ClientOptionsB...
    type IAppLifecycleServiceProxy (line 53) | public partial interface IAppLifecycleServiceProxy:
    class AppLifecycleServiceProxy (line 57) | public sealed partial class AppLifecycleServiceProxy: IAppLifecycleSer...
      method AppLifecycleServiceProxy (line 63) | public AppLifecycleServiceProxy(IClientCallInvoker callInvoker) {
      method ResolveApp (line 67) | public IUnaryMethodCall<global::Plexus.Host.Internal.Generated.Resol...

FILE: desktop/src/Plexus.Host/Internal/Generated/interop/InvocationDescriptor.msg.g.cs
  class InvocationDescriptorReflection (line 31) | internal static partial class InvocationDescriptorReflection {
    method InvocationDescriptorReflection (line 40) | static InvocationDescriptorReflection() {
  class InvocationDescriptor (line 62) | internal sealed partial class InvocationDescriptor : pb::IMessage<Invoca...
    method InvocationDescriptor (line 85) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 91) | partial void OnConstruction();
    method InvocationDescriptor (line 93) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 104) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 170) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 176) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 193) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 208) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 214) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 247) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 276) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 301) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 331) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 375) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Host/Internal/Generated/interop/Options.msg.g.cs
  class OptionsReflection (line 31) | internal static partial class OptionsReflection {
    method OptionsReflection (line 40) | static OptionsReflection() {
  class OptionsExtensions (line 57) | internal static partial class OptionsExtensions {

FILE: desktop/src/Plexus.Host/Internal/Generated/interop/UniqueId.msg.g.cs
  class UniqueIdReflection (line 31) | internal static partial class UniqueIdReflection {
    method UniqueIdReflection (line 40) | static UniqueIdReflection() {
  class UniqueId (line 62) | internal sealed partial class UniqueId : pb::IMessage<UniqueId>
    method UniqueId (line 85) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 91) | partial void OnConstruction();
    method UniqueId (line 93) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 101) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 131) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 137) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 151) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 163) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 169) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 190) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 207) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 223) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 238) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 264) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Host/Internal/IProgram.cs
  type IProgram (line 21) | internal interface IProgram
    method StartAsync (line 29) | Task<Task> StartAsync();
    method ShutdownAsync (line 31) | Task ShutdownAsync();

FILE: desktop/src/Plexus.Host/Internal/InstanceAwareness.cs
  type InstanceAwareness (line 19) | internal enum InstanceAwareness

FILE: desktop/src/Plexus.Host/Internal/InteropCliProgram.cs
  class InteropCliProgram (line 28) | internal sealed class InteropCliProgram : IProgram
    method InteropCliProgram (line 36) | public InteropCliProgram(IEnumerable<string> ids)
    method StartAsync (line 47) | public async Task<Task> StartAsync()
    method ProcessAsync (line 57) | private async Task ProcessAsync()
    method LaunchAppAsync (line 69) | private async Task LaunchAppAsync(string appId)
    method ShutdownAsync (line 90) | public Task ShutdownAsync()

FILE: desktop/src/Plexus.Host/Internal/LaunchCliOptions.cs
  class LaunchCliOptions (line 22) | #if !NET45

FILE: desktop/src/Plexus.Host/Internal/LockFile.cs
  class LockFile (line 25) | internal sealed class LockFile : IDisposable
    method LockFile (line 30) | public LockFile(string lockFileName, string lockFileContent)
    method TryEnter (line 38) | public bool TryEnter(int timeoutMs)
    method Release (line 60) | public void Release()
    method Dispose (line 80) | public void Dispose()

FILE: desktop/src/Plexus.Host/Internal/ProgramLoader.cs
  class ProgramLoader (line 26) | internal sealed class ProgramLoader : IDisposable
    method ProgramLoader (line 35) | public ProgramLoader(IProgram program)
    method LoadAndRunAsync (line 42) | public async Task<int> LoadAndRunAsync()
    method RegisterShutdownEvent (line 96) | private void RegisterShutdownEvent()
    method AttachToParent (line 115) | private void AttachToParent(Process parentProcess)
    method ShutdownAsync (line 136) | private async Task ShutdownAsync()
    method Dispose (line 169) | public void Dispose()

FILE: desktop/src/Plexus.Host/Internal/StopCliOptions.cs
  class StopCliOptions (line 21) | #if !NET45

FILE: desktop/src/Plexus.Host/Internal/StudioCliOptions.cs
  class StudioCliOptions (line 21) | #if !NET45

FILE: desktop/src/Plexus.Host/Internal/VerbOptions.cs
  class VerbOptions (line 23) | internal sealed class VerbOptions
    method DoHelpForVerb (line 25) | [HelpVerbOption]

FILE: desktop/src/Plexus.Host/Program.cs
  class Program (line 30) | public sealed class Program
    method Main (line 34) | public static int Main(string[] args)
    method RunAsync (line 40) | public async Task<int> RunAsync(string[] args)
    method LoadAndRunProgramAsync (line 87) | private static async Task<int> LoadAndRunProgramAsync(IProgram program)
    method LaunchAppAsync (line 95) | private static async Task<int> LaunchAppAsync(LaunchCliOptions opts)
    method StartBrokerAsync (line 101) | private static async Task<int> StartBrokerAsync(StartCliOptions opts)
    method StopBrokerAsync (line 108) | private static async Task<int> StopBrokerAsync()
    method StartStudioAsync (line 166) | private static Task<int> StartStudioAsync()
    method InitializeProcess (line 186) | private static void InitializeProcess()

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/AppConnectionEvent.cs
  class AppConnectionEvent (line 19) | public class AppConnectionEvent
    method AppConnectionEvent (line 21) | public AppConnectionEvent(AppConnectionDescriptor connection, Connecti...

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/ConnectionEventType.cs
  type ConnectionEventType (line 19) | public enum ConnectionEventType

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppConnectedEventProvider.cs
  type IAppConnectedEventProvider (line 21) | public interface IAppConnectedEventProvider

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppConnection.cs
  type IAppConnection (line 24) | public interface IAppConnection
    method CreateChannelAsync (line 32) | ValueTask<ITransportChannel> CreateChannelAsync();

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppLifecycleManager.cs
  type IAppLifecycleManager (line 23) | public interface IAppLifecycleManager : IAppConnectedEventProvider
    method AcceptConnection (line 25) | IAppConnection AcceptConnection(ITransportConnection connection, AppCo...
    method TryRemoveConnection (line 27) | bool TryRemoveConnection(IAppConnection connection);
    method ReportConnectionError (line 29) | void ReportConnectionError(AppConnectionDescriptor connectionInfo);
    method TryGetOnlineConnection (line 31) | bool TryGetOnlineConnection(UniqueId connectionId, out IAppConnection ...
    method TryGetOnlineConnection (line 33) | bool TryGetOnlineConnection(UniqueId appInstanceId, string app, out IA...
    method GetOnlineConnections (line 35) | IReadOnlyCollection<IAppConnection> GetOnlineConnections();
    method FilterCanBeLaunched (line 37) | IEnumerable<string> FilterCanBeLaunched(IEnumerable<string> appIds);
    method CanBeLaunched (line 39) | bool CanBeLaunched(string appId);
    method LaunchAndConnectAsync (line 41) | Task<ResolvedConnection> LaunchAndConnectAsync(string appId, ResolveMo...
    method GetAppInstanceConnections (line 43) | IReadOnlyCollection<IAppConnection> GetAppInstanceConnections(UniqueId...
    method GetAppConnections (line 45) | IReadOnlyCollection<IAppConnection> GetAppConnections(string appId);
    method TryGetConnectionInProgress (line 47) | bool TryGetConnectionInProgress(UniqueId appInstanceId, string appId, ...
    method RegisterAppInstanceConnection (line 48) | void RegisterAppInstanceConnection(string appId, UniqueId appInstanceId);
    method RegisterAppInstance (line 50) | void RegisterAppInstance(UniqueId appInstanceId);
    method IsAppInstanceRegistered (line 51) | bool IsAppInstanceRegistered(UniqueId appInstanceId);

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IContextLinkageManager.cs
  type IContextLinkageManager (line 22) | public interface IContextLinkageManager
    method IsContextShouldBeConsidered (line 24) | bool IsContextShouldBeConsidered(IContextLinkageOptions contextLinkage...
    method GetAppsInContexts (line 26) | IReadOnlyCollection<(UniqueId AppInstanceId, string AppId, Maybe<Uniqu...

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IInteropContext.cs
  type IInteropContext (line 22) | public interface IInteropContext
    method StartAsync (line 24) | Task StartAsync();
    method StopAsync (line 25) | Task StopAsync();

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/IInvocationEventProvider.cs
  type IInvocationEventProvider (line 19) | public interface IInvocationEventProvider
    method OnInvocationStarted (line 21) | void OnInvocationStarted(InvocationStartedEventDescriptor eventData);
    method OnInvocationFinished (line 23) | void OnInvocationFinished(InvocationFinishedEventDescriptor eventData);

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationDescriptor.cs
  class InvocationDescriptor (line 19) | public sealed class InvocationDescriptor
    method InvocationDescriptor (line 21) | public InvocationDescriptor(
    method ToString (line 41) | public override string ToString()

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationFinishedEventDescriptor.cs
  class InvocationFinishedEventDescriptor (line 19) | public sealed class InvocationFinishedEventDescriptor
    method InvocationFinishedEventDescriptor (line 21) | public InvocationFinishedEventDescriptor(
    method ToString (line 35) | public override string ToString()

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationResult.cs
  type InvocationResult (line 19) | public enum InvocationResult

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationStartedEventDescriptor.cs
  class InvocationStartedEventDescriptor (line 19) | public sealed class InvocationStartedEventDescriptor
    method InvocationStartedEventDescriptor (line 21) | public InvocationStartedEventDescriptor(InvocationDescriptor invocatio...
    method ToString (line 28) | public override string ToString()

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/ResolveMode.cs
  type ResolveMode (line 19) | public enum ResolveMode

FILE: desktop/src/Plexus.Interop.Apps.Manager.Contracts/ResolvedConnection.cs
  type ResolvedConnection (line 19) | public struct ResolvedConnection
    method ResolvedConnection (line 21) | public ResolvedConnection(IAppConnection appConnection, bool isNewInst...

FILE: desktop/src/Plexus.Interop.Apps.Manager/IAppLaunchedEventConsumer.cs
  type IAppLaunchedEventConsumer (line 22) | interface IAppLaunchedEventConsumer

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppConnection.cs
  class AppConnection (line 26) | internal sealed class AppConnection : IAppConnection
    method AppConnection (line 31) | public AppConnection(ITransportConnection connection, AppConnectionDes...
    method ProcessAsync (line 40) | private async Task ProcessAsync()
    method CreateChannelAsync (line 66) | public async ValueTask<ITransportChannel> CreateChannelAsync()
    method Equals (line 71) | public override bool Equals(object obj)
    method GetHashCode (line 77) | public override int GetHashCode()
    method ToString (line 82) | public override string ToString()

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppDto.cs
  class AppDto (line 22) | [DataContract]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppInfo.cs
  class AppInfo (line 21) | internal class AppInfo
    method AppInfo (line 23) | public AppInfo(string id, string displayName, string launcherId, IDict...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLaunchedEventProvider.cs
  class AppLaunchedEventProvider (line 23) | internal class AppLaunchedEventProvider : IAppLaunchedEventProvider, IAp...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLaunchedEventSubscriber.cs
  class AppLaunchedEventSubscriber (line 29) | internal class AppLaunchedEventSubscriber
    method AppLaunchedEventSubscriber (line 36) | public AppLaunchedEventSubscriber(
    method OnAppConnected (line 51) | private void OnAppConnected(AppConnectionDescriptor appConnectionDescr...
    method IsLauncher (line 59) | private bool IsLauncher(AppConnectionDescriptor appConnectionDescripto...
    method SubscribeToApplicationLaunchedEventStream (line 66) | private void SubscribeToApplicationLaunchedEventStream(string applicat...
    method SubscribeToLaunchedEventStream (line 76) | private void SubscribeToLaunchedEventStream(AppLifecycleManagerClient ...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLifecycleManager.cs
  class AppLifecycleManager (line 31) | internal sealed class AppLifecycleManager : IAppLifecycleManager
    method AppLifecycleManager (line 46) | public AppLifecycleManager(
    method GetAppInstanceConnections (line 60) | public IReadOnlyCollection<IAppConnection> GetAppInstanceConnections(U...
    method GetAppConnections (line 72) | public IReadOnlyCollection<IAppConnection> GetAppConnections(string ap...
    method AcceptConnection (line 84) | public IAppConnection AcceptConnection(
    method TryRemoveConnection (line 131) | public bool TryRemoveConnection(IAppConnection connection)
    method ReportConnectionError (line 174) | public void ReportConnectionError(AppConnectionDescriptor connectionInfo)
    method TryGetConnectionInProgress (line 177) | public bool TryGetConnectionInProgress(UniqueId appInstanceId, string ...
    method TryGetOnlineConnection (line 197) | public bool TryGetOnlineConnection(UniqueId connectionId, out IAppConn...
    method TryGetOnlineConnection (line 205) | public bool TryGetOnlineConnection(UniqueId appInstanceId, string app,...
    method FilterCanBeLaunched (line 215) | public IEnumerable<string> FilterCanBeLaunched(IEnumerable<string> app...
    method CanBeLaunched (line 220) | public bool CanBeLaunched(string appId)
    method LaunchAndConnectAsync (line 225) | public async Task<ResolvedConnection> LaunchAndConnectAsync(string app...
    method GetOnlineConnections (line 235) | public IReadOnlyCollection<IAppConnection> GetOnlineConnections()
    method LaunchAndWaitConnectionAsync (line 243) | private async Task<IAppConnection> LaunchAndWaitConnectionAsync(
    method OnApplicationLaunchedEvent (line 291) | private void OnApplicationLaunchedEvent(AppLaunchedEvent appLaunchedEv...
    method RegisterAppInstanceConnection (line 297) | public void RegisterAppInstanceConnection(string appId, UniqueId appIn...
    method RegisterAppInstanceConnection (line 302) | private void RegisterAppInstanceConnection(IEnumerable<string> appIds,...
    method RegisterAppInstance (line 323) | public void RegisterAppInstance(UniqueId appInstanceId)
    method IsAppInstanceRegistered (line 336) | public bool IsAppInstanceRegistered(UniqueId appInstanceId)
    method LaunchAsync (line 344) | private async Task<UniqueId> LaunchAsync(
    method LaunchUsingLauncherAsync (line 388) | private async Task<AppLaunchResponse> LaunchUsingLauncherAsync(string ...
    method Convert (line 403) | private static AppLaunchMode Convert(ResolveMode resolveMode)

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLifecycleManagerClientClientRepository.cs
  class AppLifecycleManagerClientClientRepository (line 25) | internal class AppLifecycleManagerClientClientRepository : IAppLifecycle...
    method Stop (line 34) | public void Stop()
    method GetClientObservable (line 41) | public IObservable<AppLifecycleManagerClient> GetClientObservable()
    method GetClientAsync (line 54) | public async Task<AppLifecycleManagerClient> GetClientAsync()
    method Start (line 65) | public async Task Start(Func<AppLifecycleManagerClient> createClientFunc)
    method Disconnect (line 100) | private void Disconnect(AppLifecycleManagerClient client)
    method GetRunningClient (line 105) | private AppLifecycleManagerClient GetRunningClient()
    method SetConnectedClient (line 113) | private void SetConnectedClient(AppLifecycleManagerClient client)
    method RemoveCurrentClient (line 122) | private void RemoveCurrentClient()

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppRegistry.cs
  class AppRegistry (line 21) | internal class AppRegistry
    method AppRegistry (line 23) | public AppRegistry(IEnumerable<AppInfo> apps)

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/AppsDto.cs
  class AppsDto (line 22) | [DataContract]
    method FromContent (line 28) | public static AppsDto FromContent(string content) => JsonConvert.Deser...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppConnectionDescriptor.msg.g.cs
  class AppConnectionDescriptorReflection (line 31) | internal static partial class AppConnectionDescriptorReflection {
    method AppConnectionDescriptorReflection (line 40) | static AppConnectionDescriptorReflection() {
  type TransportType (line 63) | internal enum TransportType {
  class AppConnectionDescriptor (line 73) | internal sealed partial class AppConnectionDescriptor : pb::IMessage<App...
    method AppConnectionDescriptor (line 96) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 102) | partial void OnConstruction();
    method AppConnectionDescriptor (line 104) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 114) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 168) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 174) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 190) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 204) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 210) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 239) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 264) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 286) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 313) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 353) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLaunchMode.msg.g.cs
  class AppLaunchModeReflection (line 31) | internal static partial class AppLaunchModeReflection {
    method AppLaunchModeReflection (line 40) | static AppLaunchModeReflection() {
  type AppLaunchMode (line 55) | internal enum AppLaunchMode {

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLauncherService.msg.g.cs
  class AppLauncherServiceReflection (line 31) | internal static partial class AppLauncherServiceReflection {
    method AppLauncherServiceReflection (line 40) | static AppLauncherServiceReflection() {
  class AppLaunchRequest (line 80) | internal sealed partial class AppLaunchRequest : pb::IMessage<AppLaunchR...
    method AppLaunchRequest (line 103) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 109) | partial void OnConstruction();
    method AppLaunchRequest (line 111) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 122) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 188) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 194) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 211) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 226) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 232) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 265) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 294) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 319) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 349) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 393) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppLaunchReferrer (line 435) | internal sealed partial class AppLaunchReferrer : pb::IMessage<AppLaunch...
    method AppLaunchReferrer (line 458) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 464) | partial void OnConstruction();
    method AppLaunchReferrer (line 466) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 475) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 517) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 523) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 538) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 551) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 557) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 582) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 603) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 622) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 646) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 682) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppLaunchResponse (line 716) | internal sealed partial class AppLaunchResponse : pb::IMessage<AppLaunch...
    method AppLaunchResponse (line 739) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 745) | partial void OnConstruction();
    method AppLaunchResponse (line 747) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 754) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 772) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 778) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 791) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 802) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 808) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 825) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 838) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 851) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 866) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 891) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppLaunchedEvent (line 914) | internal sealed partial class AppLaunchedEvent : pb::IMessage<AppLaunche...
    method AppLaunchedEvent (line 937) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 943) | partial void OnConstruction();
    method AppLaunchedEvent (line 945) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 954) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 995) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1001) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1016) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1029) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1035) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1057) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1075) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1092) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1114) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1150) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLauncherService.svc.g.cs
  class AppLauncherService (line 31) | internal static partial class AppLauncherService {
    method CreateDescriptor (line 39) | public static AppLauncherService.Descriptor CreateDescriptor() {
    method CreateDescriptor (line 43) | public static AppLauncherService.Descriptor CreateDescriptor(string al...
    type ILaunchProxy (line 47) | public partial interface ILaunchProxy {
      method Launch (line 48) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.AppL...
    type IAppLaunchedEventStreamProxy (line 51) | public partial interface IAppLaunchedEventStreamProxy {
      method AppLaunchedEventStream (line 52) | IServerStreamingMethodCall<global::Plexus.Interop.Apps.Internal.Gene...
    type ILaunchImpl (line 55) | public partial interface ILaunchImpl {
      method Launch (line 56) | Task<global::Plexus.Interop.Apps.Internal.Generated.AppLaunchRespons...
    type IAppLaunchedEventStreamImpl (line 59) | public partial interface IAppLaunchedEventStreamImpl {
      method AppLaunchedEventStream (line 60) | Task AppLaunchedEventStream(global::Google.Protobuf.WellKnownTypes.E...
    class Descriptor (line 63) | public sealed partial class Descriptor {
      method Descriptor (line 68) | public Descriptor() {
      method Descriptor (line 73) | public Descriptor(string alias) {

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleManager.app.g.cs
  type IAppLifecycleManagerClient (line 32) | internal partial interface IAppLifecycleManagerClient: IClient {
  class AppLifecycleManagerClient (line 36) | internal sealed partial class AppLifecycleManagerClient: ClientBase, IAp...
    method CreateClientOptions (line 40) | private static ClientOptions CreateClientOptions(AppLifecycleManagerCl...
    method AppLifecycleManagerClient (line 49) | public AppLifecycleManagerClient(
    method AppLifecycleManagerClient (line 63) | public AppLifecycleManagerClient(AppLifecycleManagerClient.ServiceBind...
    class ServiceBinder (line 68) | public sealed partial class ServiceBinder {
      method ServiceBinder (line 70) | public ServiceBinder(
      method Bind (line 87) | public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) {
    type IAppLifecycleServiceImpl (line 96) | public partial interface IAppLifecycleServiceImpl:
    class AppLifecycleServiceBinder (line 104) | private sealed partial class AppLifecycleServiceBinder {
      method AppLifecycleServiceBinder (line 109) | public AppLifecycleServiceBinder(IAppLifecycleServiceImpl impl) {
      method Bind (line 113) | public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) {
      method Bind (line 117) | private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefini...
    class AppLifecycleServiceImpl (line 127) | public sealed partial class AppLifecycleServiceImpl: IAppLifecycleServ...
      method AppLifecycleServiceImpl (line 135) | public AppLifecycleServiceImpl(
      method ResolveApp (line 149) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ResolveAp...
      method GetLifecycleEventStream (line 153) | public Task GetLifecycleEventStream(global::Google.Protobuf.WellKnow...
      method GetInvocationEventStream (line 157) | public Task GetInvocationEventStream(global::Google.Protobuf.WellKno...
      method GetConnections (line 161) | public Task<global::Plexus.Interop.Apps.Internal.Generated.GetConnec...
      method GetConnectionsStream (line 165) | public Task GetConnectionsStream(global::Plexus.Interop.Apps.Interna...
      method AppLifecycleServiceImpl (line 180) | public AppLifecycleServiceImpl(T impl) {
      method ResolveApp (line 184) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ResolveAp...
      method GetLifecycleEventStream (line 188) | public Task GetLifecycleEventStream(global::Google.Protobuf.WellKnow...
      method GetInvocationEventStream (line 192) | public Task GetInvocationEventStream(global::Google.Protobuf.WellKno...
      method GetConnections (line 196) | public Task<global::Plexus.Interop.Apps.Internal.Generated.GetConnec...
      method GetConnectionsStream (line 200) | public Task GetConnectionsStream(global::Plexus.Interop.Apps.Interna...
    class AppLifecycleServiceImpl (line 170) | public sealed partial class AppLifecycleServiceImpl<T>: IAppLifecycleS...
      method AppLifecycleServiceImpl (line 135) | public AppLifecycleServiceImpl(
      method ResolveApp (line 149) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ResolveAp...
      method GetLifecycleEventStream (line 153) | public Task GetLifecycleEventStream(global::Google.Protobuf.WellKnow...
      method GetInvocationEventStream (line 157) | public Task GetInvocationEventStream(global::Google.Protobuf.WellKno...
      method GetConnections (line 161) | public Task<global::Plexus.Interop.Apps.Internal.Generated.GetConnec...
      method GetConnectionsStream (line 165) | public Task GetConnectionsStream(global::Plexus.Interop.Apps.Interna...
      method AppLifecycleServiceImpl (line 180) | public AppLifecycleServiceImpl(T impl) {
      method ResolveApp (line 184) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ResolveAp...
      method GetLifecycleEventStream (line 188) | public Task GetLifecycleEventStream(global::Google.Protobuf.WellKnow...
      method GetInvocationEventStream (line 192) | public Task GetInvocationEventStream(global::Google.Protobuf.WellKno...
      method GetConnections (line 196) | public Task<global::Plexus.Interop.Apps.Internal.Generated.GetConnec...
      method GetConnectionsStream (line 200) | public Task GetConnectionsStream(global::Plexus.Interop.Apps.Interna...
    type IAppMetadataServiceImpl (line 205) | public partial interface IAppMetadataServiceImpl:
    class AppMetadataServiceBinder (line 210) | private sealed partial class AppMetadataServiceBinder {
      method AppMetadataServiceBinder (line 215) | public AppMetadataServiceBinder(IAppMetadataServiceImpl impl) {
      method Bind (line 219) | public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) {
      method Bind (line 223) | private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefini...
    class AppMetadataServiceImpl (line 230) | public sealed partial class AppMetadataServiceImpl: IAppMetadataServic...
      method AppMetadataServiceImpl (line 235) | public AppMetadataServiceImpl(
      method GetAppMetadataChangedEventStream (line 243) | public Task GetAppMetadataChangedEventStream(global::Google.Protobuf...
      method GetMetamodelChangedEventStream (line 247) | public Task GetMetamodelChangedEventStream(global::Google.Protobuf.W...
      method AppMetadataServiceImpl (line 259) | public AppMetadataServiceImpl(T impl) {
      method GetAppMetadataChangedEventStream (line 263) | public Task GetAppMetadataChangedEventStream(global::Google.Protobuf...
      method GetMetamodelChangedEventStream (line 267) | public Task GetMetamodelChangedEventStream(global::Google.Protobuf.W...
    class AppMetadataServiceImpl (line 252) | public sealed partial class AppMetadataServiceImpl<T>: IAppMetadataSer...
      method AppMetadataServiceImpl (line 235) | public AppMetadataServiceImpl(
      method GetAppMetadataChangedEventStream (line 243) | public Task GetAppMetadataChangedEventStream(global::Google.Protobuf...
      method GetMetamodelChangedEventStream (line 247) | public Task GetMetamodelChangedEventStream(global::Google.Protobuf.W...
      method AppMetadataServiceImpl (line 259) | public AppMetadataServiceImpl(T impl) {
      method GetAppMetadataChangedEventStream (line 263) | public Task GetAppMetadataChangedEventStream(global::Google.Protobuf...
      method GetMetamodelChangedEventStream (line 267) | public Task GetMetamodelChangedEventStream(global::Google.Protobuf.W...
    type IContextLinkageServiceImpl (line 272) | public partial interface IContextLinkageServiceImpl:
    class ContextLinkageServiceBinder (line 284) | private sealed partial class ContextLinkageServiceBinder {
      method ContextLinkageServiceBinder (line 289) | public ContextLinkageServiceBinder(IContextLinkageServiceImpl impl) {
      method Bind (line 293) | public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) {
      method Bind (line 297) | private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefini...
    class ContextLinkageServiceImpl (line 311) | public sealed partial class ContextLinkageServiceImpl: IContextLinkage...
      method ContextLinkageServiceImpl (line 323) | public ContextLinkageServiceImpl(
      method ContextLoadedStream (line 345) | public Task ContextLoadedStream(global::Plexus.Interop.Apps.Internal...
      method CreateContext (line 349) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Context> ...
      method CreateContext2 (line 353) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Context> ...
      method JoinContext (line 357) | public Task<global::Google.Protobuf.WellKnownTypes.Empty> JoinContex...
      method GetContexts (line 361) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ContextsL...
      method GetLinkedInvocations (line 365) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Invocatio...
      method GetAllLinkedInvocations (line 369) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ContextTo...
      method AppJoinedContextStream (line 373) | public Task AppJoinedContextStream(global::Google.Protobuf.WellKnown...
      method RestoreContextsLinkage (line 377) | public Task<global::Plexus.Interop.Apps.Internal.Generated.RestoreCo...
      method ContextLinkageServiceImpl (line 396) | public ContextLinkageServiceImpl(T impl) {
      method ContextLoadedStream (line 400) | public Task ContextLoadedStream(global::Plexus.Interop.Apps.Internal...
      method CreateContext (line 404) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Context> ...
      method CreateContext2 (line 408) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Context> ...
      method JoinContext (line 412) | public Task<global::Google.Protobuf.WellKnownTypes.Empty> JoinContex...
      method GetContexts (line 416) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ContextsL...
      method GetLinkedInvocations (line 420) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Invocatio...
      method GetAllLinkedInvocations (line 424) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ContextTo...
      method AppJoinedContextStream (line 428) | public Task AppJoinedContextStream(global::Google.Protobuf.WellKnown...
      method RestoreContextsLinkage (line 432) | public Task<global::Plexus.Interop.Apps.Internal.Generated.RestoreCo...
    class ContextLinkageServiceImpl (line 382) | public sealed partial class ContextLinkageServiceImpl<T>: IContextLink...
      method ContextLinkageServiceImpl (line 323) | public ContextLinkageServiceImpl(
      method ContextLoadedStream (line 345) | public Task ContextLoadedStream(global::Plexus.Interop.Apps.Internal...
      method CreateContext (line 349) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Context> ...
      method CreateContext2 (line 353) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Context> ...
      method JoinContext (line 357) | public Task<global::Google.Protobuf.WellKnownTypes.Empty> JoinContex...
      method GetContexts (line 361) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ContextsL...
      method GetLinkedInvocations (line 365) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Invocatio...
      method GetAllLinkedInvocations (line 369) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ContextTo...
      method AppJoinedContextStream (line 373) | public Task AppJoinedContextStream(global::Google.Protobuf.WellKnown...
      method RestoreContextsLinkage (line 377) | public Task<global::Plexus.Interop.Apps.Internal.Generated.RestoreCo...
      method ContextLinkageServiceImpl (line 396) | public ContextLinkageServiceImpl(T impl) {
      method ContextLoadedStream (line 400) | public Task ContextLoadedStream(global::Plexus.Interop.Apps.Internal...
      method CreateContext (line 404) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Context> ...
      method CreateContext2 (line 408) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Context> ...
      method JoinContext (line 412) | public Task<global::Google.Protobuf.WellKnownTypes.Empty> JoinContex...
      method GetContexts (line 416) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ContextsL...
      method GetLinkedInvocations (line 420) | public Task<global::Plexus.Interop.Apps.Internal.Generated.Invocatio...
      method GetAllLinkedInvocations (line 424) | public Task<global::Plexus.Interop.Apps.Internal.Generated.ContextTo...
      method AppJoinedContextStream (line 428) | public Task AppJoinedContextStream(global::Google.Protobuf.WellKnown...
      method RestoreContextsLinkage (line 432) | public Task<global::Plexus.Interop.Apps.Internal.Generated.RestoreCo...
    type IAppRegistrationServiceImpl (line 437) | public partial interface IAppRegistrationServiceImpl:
    class AppRegistrationServiceBinder (line 442) | private sealed partial class AppRegistrationServiceBinder {
      method AppRegistrationServiceBinder (line 447) | public AppRegistrationServiceBinder(IAppRegistrationServiceImpl impl) {
      method Bind (line 451) | public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) {
      method Bind (line 455) | private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefini...
    class AppRegistrationServiceImpl (line 462) | public sealed partial class AppRegistrationServiceImpl: IAppRegistrati...
      method AppRegistrationServiceImpl (line 467) | public AppRegistrationServiceImpl(
      method RequestInstanceId (line 475) | public Task<global::Plexus.Interop.Apps.Internal.Generated.UniqueId>...
      method RegisterInstanceId (line 479) | public Task<global::Plexus.Interop.Apps.Internal.Generated.RegisterI...
      method AppRegistrationServiceImpl (line 491) | public AppRegistrationServiceImpl(T impl) {
      method RequestInstanceId (line 495) | public Task<global::Plexus.Interop.Apps.Internal.Generated.UniqueId>...
      method RegisterInstanceId (line 499) | public Task<global::Plexus.Interop.Apps.Internal.Generated.RegisterI...
    class AppRegistrationServiceImpl (line 484) | public sealed partial class AppRegistrationServiceImpl<T>: IAppRegistr...
      method AppRegistrationServiceImpl (line 467) | public AppRegistrationServiceImpl(
      method RequestInstanceId (line 475) | public Task<global::Plexus.Interop.Apps.Internal.Generated.UniqueId>...
      method RegisterInstanceId (line 479) | public Task<global::Plexus.Interop.Apps.Internal.Generated.RegisterI...
      method AppRegistrationServiceImpl (line 491) | public AppRegistrationServiceImpl(T impl) {
      method RequestInstanceId (line 495) | public Task<global::Plexus.Interop.Apps.Internal.Generated.UniqueId>...
      method RegisterInstanceId (line 499) | public Task<global::Plexus.Interop.Apps.Internal.Generated.RegisterI...
    type IAppLauncherServiceProxy (line 504) | public partial interface IAppLauncherServiceProxy:
    class AppLauncherServiceProxy (line 509) | public sealed partial class AppLauncherServiceProxy: IAppLauncherServi...
      method AppLauncherServiceProxy (line 515) | public AppLauncherServiceProxy(IClientCallInvoker callInvoker) {
      method Launch (line 519) | public IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generat...
      method AppLaunchedEventStream (line 523) | public IServerStreamingMethodCall<global::Plexus.Interop.Apps.Intern...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleService.msg.g.cs
  class AppLifecycleServiceReflection (line 31) | internal static partial class AppLifecycleServiceReflection {
    method AppLifecycleServiceReflection (line 40) | static AppLifecycleServiceReflection() {
  type InvocationResult (line 125) | internal enum InvocationResult {
  class ResolveAppRequest (line 134) | internal sealed partial class ResolveAppRequest : pb::IMessage<ResolveAp...
    method ResolveAppRequest (line 157) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 163) | partial void OnConstruction();
    method ResolveAppRequest (line 165) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 173) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 203) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 209) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 223) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 235) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 241) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 262) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 279) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 295) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 310) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 336) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ResolveAppResponse (line 360) | internal sealed partial class ResolveAppResponse : pb::IMessage<ResolveA...
    method ResolveAppResponse (line 383) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 389) | partial void OnConstruction();
    method ResolveAppResponse (line 391) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 400) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 442) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 448) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 463) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 476) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 482) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 507) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 528) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 547) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 571) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 607) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppLifecycleEvent (line 641) | internal sealed partial class AppLifecycleEvent : pb::IMessage<AppLifecy...
    method AppLifecycleEvent (line 664) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 670) | partial void OnConstruction();
    method AppLifecycleEvent (line 672) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 690) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    type EventOneofCase (line 734) | public enum EventOneofCase {
    method ClearEvent (line 747) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 754) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 760) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 776) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 790) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 796) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 821) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 842) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 861) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 891) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 936) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class InvocationEvent (line 979) | internal sealed partial class InvocationEvent : pb::IMessage<InvocationE...
    method InvocationEvent (line 1002) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1008) | partial void OnConstruction();
    method InvocationEvent (line 1010) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1025) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    type EventOneofCase (line 1057) | public enum EventOneofCase {
    method ClearEvent (line 1069) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1076) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1082) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1097) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1110) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1116) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1137) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1154) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1170) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1194) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1230) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppConnectedEvent (line 1264) | internal sealed partial class AppConnectedEvent : pb::IMessage<AppConnec...
    method AppConnectedEvent (line 1287) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1293) | partial void OnConstruction();
    method AppConnectedEvent (line 1295) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1302) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1320) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1326) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1339) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1350) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1356) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1373) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1386) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1399) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1414) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1439) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppDisconnectedEvent (line 1462) | internal sealed partial class AppDisconnectedEvent : pb::IMessage<AppDis...
    method AppDisconnectedEvent (line 1485) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1491) | partial void OnConstruction();
    method AppDisconnectedEvent (line 1493) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1500) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1518) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1524) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1537) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1548) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1554) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1571) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1584) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1597) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1612) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1637) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppConnectionErrorEvent (line 1660) | internal sealed partial class AppConnectionErrorEvent : pb::IMessage<App...
    method AppConnectionErrorEvent (line 1683) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1689) | partial void OnConstruction();
    method AppConnectionErrorEvent (line 1691) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1698) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1716) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1722) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1735) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1746) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1752) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1769) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1782) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1795) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1810) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1835) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class InvocationStartedEvent (line 1858) | internal sealed partial class InvocationStartedEvent : pb::IMessage<Invo...
    method InvocationStartedEvent (line 1881) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1887) | partial void OnConstruction();
    method InvocationStartedEvent (line 1889) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1896) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1914) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1920) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1933) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1944) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1950) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1967) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1980) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1993) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2008) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2033) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class InvocationFinishedEvent (line 2056) | internal sealed partial class InvocationFinishedEvent : pb::IMessage<Inv...
    method InvocationFinishedEvent (line 2079) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2085) | partial void OnConstruction();
    method InvocationFinishedEvent (line 2087) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2096) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2138) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2144) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2159) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2172) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2178) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2203) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2224) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2243) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2264) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2297) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class GetConnectionsRequest (line 2328) | internal sealed partial class GetConnectionsRequest : pb::IMessage<GetCo...
    method GetConnectionsRequest (line 2351) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2357) | partial void OnConstruction();
    method GetConnectionsRequest (line 2359) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2368) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2410) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2416) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2431) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2444) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2450) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2475) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2496) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2515) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2539) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2575) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class GetConnectionsResponse (line 2609) | internal sealed partial class GetConnectionsResponse : pb::IMessage<GetC...
    method GetConnectionsResponse (line 2632) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2638) | partial void OnConstruction();
    method GetConnectionsResponse (line 2640) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2647) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2664) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2670) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2683) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2694) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2700) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2714) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2724) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2735) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2745) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2767) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class GetConnectionsEvent (line 2787) | internal sealed partial class GetConnectionsEvent : pb::IMessage<GetConn...
    method GetConnectionsEvent (line 2810) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2816) | partial void OnConstruction();
    method GetConnectionsEvent (line 2818) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2834) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    type EventOneofCase (line 2877) | public enum EventOneofCase {
    method ClearEvent (line 2889) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2896) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2902) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2918) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2932) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2938) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2960) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2978) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2995) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 3020) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 3060) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleService.svc.g.cs
  class AppLifecycleService (line 31) | internal static partial class AppLifecycleService {
    method CreateDescriptor (line 42) | public static AppLifecycleService.Descriptor CreateDescriptor() {
    method CreateDescriptor (line 46) | public static AppLifecycleService.Descriptor CreateDescriptor(string a...
    type IResolveAppProxy (line 50) | public partial interface IResolveAppProxy {
      method ResolveApp (line 51) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Reso...
    type IGetLifecycleEventStreamProxy (line 54) | public partial interface IGetLifecycleEventStreamProxy {
      method GetLifecycleEventStream (line 55) | IServerStreamingMethodCall<global::Plexus.Interop.Apps.Internal.Gene...
    type IGetInvocationEventStreamProxy (line 58) | public partial interface IGetInvocationEventStreamProxy {
      method GetInvocationEventStream (line 59) | IServerStreamingMethodCall<global::Plexus.Interop.Apps.Internal.Gene...
    type IGetConnectionsProxy (line 62) | public partial interface IGetConnectionsProxy {
      method GetConnections (line 63) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.GetC...
    type IGetConnectionsStreamProxy (line 66) | public partial interface IGetConnectionsStreamProxy {
      method GetConnectionsStream (line 67) | IServerStreamingMethodCall<global::Plexus.Interop.Apps.Internal.Gene...
    type IResolveAppImpl (line 70) | public partial interface IResolveAppImpl {
      method ResolveApp (line 71) | Task<global::Plexus.Interop.Apps.Internal.Generated.ResolveAppRespon...
    type IGetLifecycleEventStreamImpl (line 74) | public partial interface IGetLifecycleEventStreamImpl {
      method GetLifecycleEventStream (line 75) | Task GetLifecycleEventStream(global::Google.Protobuf.WellKnownTypes....
    type IGetInvocationEventStreamImpl (line 78) | public partial interface IGetInvocationEventStreamImpl {
      method GetInvocationEventStream (line 79) | Task GetInvocationEventStream(global::Google.Protobuf.WellKnownTypes...
    type IGetConnectionsImpl (line 82) | public partial interface IGetConnectionsImpl {
      method GetConnections (line 83) | Task<global::Plexus.Interop.Apps.Internal.Generated.GetConnectionsRe...
    type IGetConnectionsStreamImpl (line 86) | public partial interface IGetConnectionsStreamImpl {
      method GetConnectionsStream (line 87) | Task GetConnectionsStream(global::Plexus.Interop.Apps.Internal.Gener...
    class Descriptor (line 90) | public sealed partial class Descriptor {
      method Descriptor (line 98) | public Descriptor() {
      method Descriptor (line 106) | public Descriptor(string alias) {

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppMetadataService.msg.g.cs
  class AppMetadataServiceReflection (line 31) | internal static partial class AppMetadataServiceReflection {
    method AppMetadataServiceReflection (line 40) | static AppMetadataServiceReflection() {
  class AppMetadataChangedEvent (line 111) | internal sealed partial class AppMetadataChangedEvent : pb::IMessage<App...
    method AppMetadataChangedEvent (line 134) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 140) | partial void OnConstruction();
    method AppMetadataChangedEvent (line 142) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 149) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 166) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 172) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 185) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 196) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 202) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 216) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 226) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 237) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 247) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 269) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppMetadataInfo (line 289) | internal sealed partial class AppMetadataInfo : pb::IMessage<AppMetadata...
    method AppMetadataInfo (line 312) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 318) | partial void OnConstruction();
    method AppMetadataInfo (line 320) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 330) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 383) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 389) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 405) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 419) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 425) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 451) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 473) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 493) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 512) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 546) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class MetamodelChangedEvent (line 578) | internal sealed partial class MetamodelChangedEvent : pb::IMessage<Metam...
    method MetamodelChangedEvent (line 601) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 607) | partial void OnConstruction();
    method MetamodelChangedEvent (line 609) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 617) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 645) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 651) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 665) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 677) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 683) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 698) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 709) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 721) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 732) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 758) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppMetamodelInfo (line 782) | internal sealed partial class AppMetamodelInfo : pb::IMessage<AppMetamod...
    method AppMetamodelInfo (line 805) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 811) | partial void OnConstruction();
    method AppMetamodelInfo (line 813) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 822) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 862) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 868) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 883) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 896) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 902) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 921) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 936) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 951) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 965) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 995) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ProvidedService (line 1023) | internal sealed partial class ProvidedService : pb::IMessage<ProvidedSer...
    method ProvidedService (line 1046) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1052) | partial void OnConstruction();
    method ProvidedService (line 1054) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1063) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1104) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1110) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1125) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1138) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1144) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1166) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1184) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1201) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1217) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1247) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ConsumedService (line 1275) | internal sealed partial class ConsumedService : pb::IMessage<ConsumedSer...
    method ConsumedService (line 1298) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1304) | partial void OnConstruction();
    method ConsumedService (line 1306) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1315) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1356) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1362) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1377) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1390) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1396) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1418) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1436) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1453) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1469) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1499) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ConsumedMethod (line 1527) | internal sealed partial class ConsumedMethod : pb::IMessage<ConsumedMethod>
    method ConsumedMethod (line 1550) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1556) | partial void OnConstruction();
    method ConsumedMethod (line 1558) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1565) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1583) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1589) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1602) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1613) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1619) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1636) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1649) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1662) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1674) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1696) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ProvidedMethod (line 1716) | internal sealed partial class ProvidedMethod : pb::IMessage<ProvidedMethod>
    method ProvidedMethod (line 1739) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1745) | partial void OnConstruction();
    method ProvidedMethod (line 1747) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1758) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1823) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1829) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1846) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1861) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1867) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1897) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1923) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1946) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1968) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2006) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    class Types (line 2042) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      type MetamodelLaunchMode (line 2045) | internal enum MetamodelLaunchMode {
  class Service (line 2056) | internal sealed partial class Service : pb::IMessage<Service>
    method Service (line 2079) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2085) | partial void OnConstruction();
    method Service (line 2087) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2096) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2136) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2142) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2157) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2170) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2176) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2195) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2210) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2225) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2239) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2269) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class MethodInfo (line 2297) | internal sealed partial class MethodInfo : pb::IMessage<MethodInfo>
    method MethodInfo (line 2320) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2326) | partial void OnConstruction();
    method MethodInfo (line 2328) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2338) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2392) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2398) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2414) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2428) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2434) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2463) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2488) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2510) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2531) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2565) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    class Types (line 2597) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      type MethodType (line 2600) | internal enum MethodType {
  class OptionParameter (line 2612) | internal sealed partial class OptionParameter : pb::IMessage<OptionParam...
    method OptionParameter (line 2635) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2641) | partial void OnConstruction();
    method OptionParameter (line 2643) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2651) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2681) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2687) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2701) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2713) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2719) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2740) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2757) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2773) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2788) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2814) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppMetadataService.svc.g.cs
  class AppMetadataService (line 31) | internal static partial class AppMetadataService {
    method CreateDescriptor (line 39) | public static AppMetadataService.Descriptor CreateDescriptor() {
    method CreateDescriptor (line 43) | public static AppMetadataService.Descriptor CreateDescriptor(string al...
    type IGetAppMetadataChangedEventStreamProxy (line 47) | public partial interface IGetAppMetadataChangedEventStreamProxy {
      method GetAppMetadataChangedEventStream (line 48) | IServerStreamingMethodCall<global::Plexus.Interop.Apps.Internal.Gene...
    type IGetMetamodelChangedEventStreamProxy (line 51) | public partial interface IGetMetamodelChangedEventStreamProxy {
      method GetMetamodelChangedEventStream (line 52) | IServerStreamingMethodCall<global::Plexus.Interop.Apps.Internal.Gene...
    type IGetAppMetadataChangedEventStreamImpl (line 55) | public partial interface IGetAppMetadataChangedEventStreamImpl {
      method GetAppMetadataChangedEventStream (line 56) | Task GetAppMetadataChangedEventStream(global::Google.Protobuf.WellKn...
    type IGetMetamodelChangedEventStreamImpl (line 59) | public partial interface IGetMetamodelChangedEventStreamImpl {
      method GetMetamodelChangedEventStream (line 60) | Task GetMetamodelChangedEventStream(global::Google.Protobuf.WellKnow...
    class Descriptor (line 63) | public sealed partial class Descriptor {
      method Descriptor (line 68) | public Descriptor() {
      method Descriptor (line 73) | public Descriptor(string alias) {

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppRegistrationService.msg.g.cs
  class AppRegistrationServiceReflection (line 31) | internal static partial class AppRegistrationServiceReflection {
    method AppRegistrationServiceReflection (line 40) | static AppRegistrationServiceReflection() {
  class RequestInstanceIdRequest (line 69) | internal sealed partial class RequestInstanceIdRequest : pb::IMessage<Re...
    method RequestInstanceIdRequest (line 92) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 98) | partial void OnConstruction();
    method RequestInstanceIdRequest (line 100) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 106) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 112) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 118) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 130) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 140) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 146) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 159) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 168) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 178) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 187) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 205) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class RegisterInstanceIdRequest (line 221) | internal sealed partial class RegisterInstanceIdRequest : pb::IMessage<R...
    method RegisterInstanceIdRequest (line 244) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 250) | partial void OnConstruction();
    method RegisterInstanceIdRequest (line 252) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 259) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 277) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 283) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 296) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 307) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 313) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 330) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 343) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 356) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 371) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 396) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class RegisterInstanceIdResponse (line 419) | internal sealed partial class RegisterInstanceIdResponse : pb::IMessage<...
    method RegisterInstanceIdResponse (line 442) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 448) | partial void OnConstruction();
    method RegisterInstanceIdResponse (line 450) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 456) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 462) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 468) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 480) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 490) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 496) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 509) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 518) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 528) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 537) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 555) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppRegistrationService.svc.g.cs
  class AppRegistrationService (line 31) | internal static partial class AppRegistrationService {
    method CreateDescriptor (line 39) | public static AppRegistrationService.Descriptor CreateDescriptor() {
    method CreateDescriptor (line 43) | public static AppRegistrationService.Descriptor CreateDescriptor(strin...
    type IRequestInstanceIdProxy (line 47) | public partial interface IRequestInstanceIdProxy {
      method RequestInstanceId (line 48) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Uniq...
    type IRegisterInstanceIdProxy (line 51) | public partial interface IRegisterInstanceIdProxy {
      method RegisterInstanceId (line 52) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Regi...
    type IRequestInstanceIdImpl (line 55) | public partial interface IRequestInstanceIdImpl {
      method RequestInstanceId (line 56) | Task<global::Plexus.Interop.Apps.Internal.Generated.UniqueId> Reques...
    type IRegisterInstanceIdImpl (line 59) | public partial interface IRegisterInstanceIdImpl {
      method RegisterInstanceId (line 60) | Task<global::Plexus.Interop.Apps.Internal.Generated.RegisterInstance...
    class Descriptor (line 63) | public sealed partial class Descriptor {
      method Descriptor (line 68) | public Descriptor() {
      method Descriptor (line 73) | public Descriptor(string alias) {

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/ContextLinkage.msg.g.cs
  class ContextLinkageReflection (line 31) | internal static partial class ContextLinkageReflection {
    method ContextLinkageReflection (line 40) | static ContextLinkageReflection() {
  type ContextLoadingStatus (line 124) | internal enum ContextLoadingStatus {
  class Context (line 142) | internal sealed partial class Context : pb::IMessage<Context>
    method Context (line 165) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 171) | partial void OnConstruction();
    method Context (line 173) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 182) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 224) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 230) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 245) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 258) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 264) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 289) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 310) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 329) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 347) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 377) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ContextsList (line 405) | internal sealed partial class ContextsList : pb::IMessage<ContextsList>
    method ContextsList (line 428) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 434) | partial void OnConstruction();
    method ContextsList (line 436) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 443) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 460) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 466) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 479) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 490) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 496) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 510) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 520) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 531) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 541) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 563) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class CreateContextRequest (line 583) | internal sealed partial class CreateContextRequest : pb::IMessage<Create...
    method CreateContextRequest (line 606) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 612) | partial void OnConstruction();
    method CreateContextRequest (line 614) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 621) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 639) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 645) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 658) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 669) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 675) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 692) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 705) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 718) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 730) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 752) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ContextLoadingUpdate (line 772) | internal sealed partial class ContextLoadingUpdate : pb::IMessage<Contex...
    method ContextLoadingUpdate (line 795) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 801) | partial void OnConstruction();
    method ContextLoadingUpdate (line 803) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 812) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 858) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 864) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 879) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 892) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 898) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 917) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 932) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 947) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 961) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 991) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class InvocationRef (line 1019) | internal sealed partial class InvocationRef : pb::IMessage<InvocationRef>
    method InvocationRef (line 1042) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1048) | partial void OnConstruction();
    method InvocationRef (line 1050) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1058) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1088) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1094) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1108) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1120) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1126) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1147) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1164) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1180) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1201) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1233) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class InvocationsList (line 1263) | internal sealed partial class InvocationsList : pb::IMessage<Invocations...
    method InvocationsList (line 1286) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1292) | partial void OnConstruction();
    method InvocationsList (line 1294) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1301) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1318) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1324) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1337) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1348) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1354) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1368) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1378) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1389) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1399) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1421) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ContextToInvocations (line 1441) | internal sealed partial class ContextToInvocations : pb::IMessage<Contex...
    method ContextToInvocations (line 1464) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1470) | partial void OnConstruction();
    method ContextToInvocations (line 1472) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1480) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1510) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1516) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1530) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1542) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1548) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1569) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1586) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1602) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1623) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1655) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class ContextToInvocationsList (line 1685) | internal sealed partial class ContextToInvocationsList : pb::IMessage<Co...
    method ContextToInvocationsList (line 1708) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1714) | partial void OnConstruction();
    method ContextToInvocationsList (line 1716) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1723) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1740) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1746) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1759) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1770) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1776) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1790) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 1800) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1811) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 1821) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 1843) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class AppJoinedContextEvent (line 1863) | internal sealed partial class AppJoinedContextEvent : pb::IMessage<AppJo...
    method AppJoinedContextEvent (line 1886) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 1892) | partial void OnConstruction();
    method AppJoinedContextEvent (line 1894) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 1902) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1932) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 1938) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 1952) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 1964) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 1970) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 1991) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2008) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2024) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2045) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2077) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class RestoreContextsLinkageRequest (line 2107) | internal sealed partial class RestoreContextsLinkageRequest : pb::IMessa...
    method RestoreContextsLinkageRequest (line 2130) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2136) | partial void OnConstruction();
    method RestoreContextsLinkageRequest (line 2138) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2145) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2162) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2168) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2181) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2192) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2198) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2212) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2222) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2233) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2243) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2265) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class RestoringAppInstance (line 2285) | internal sealed partial class RestoringAppInstance : pb::IMessage<Restor...
    method RestoringAppInstance (line 2308) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2314) | partial void OnConstruction();
    method RestoringAppInstance (line 2316) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2326) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2378) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2384) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2400) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2414) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2420) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2440) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2456) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2472) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2490) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2527) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
  class RestoreContextsLinkageResponse (line 2562) | internal sealed partial class RestoreContextsLinkageResponse : pb::IMess...
    method RestoreContextsLinkageResponse (line 2585) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 2591) | partial void OnConstruction();
    method RestoreContextsLinkageResponse (line 2593) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 2600) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2617) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 2623) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 2636) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 2647) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 2653) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 2667) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 2677) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2688) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 2698) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 2720) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/ContextLinkage.svc.g.cs
  class ContextLinkageService (line 31) | internal static partial class ContextLinkageService {
    method CreateDescriptor (line 46) | public static ContextLinkageService.Descriptor CreateDescriptor() {
    method CreateDescriptor (line 50) | public static ContextLinkageService.Descriptor CreateDescriptor(string...
    type IContextLoadedStreamProxy (line 54) | public partial interface IContextLoadedStreamProxy {
      method ContextLoadedStream (line 55) | IServerStreamingMethodCall<global::Plexus.Interop.Apps.Internal.Gene...
    type ICreateContextProxy (line 58) | public partial interface ICreateContextProxy {
      method CreateContext (line 59) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Cont...
    type ICreateContext2Proxy (line 62) | public partial interface ICreateContext2Proxy {
      method CreateContext2 (line 63) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Cont...
    type IJoinContextProxy (line 66) | public partial interface IJoinContextProxy {
      method JoinContext (line 67) | IUnaryMethodCall<global::Google.Protobuf.WellKnownTypes.Empty> JoinC...
    type IGetContextsProxy (line 70) | public partial interface IGetContextsProxy {
      method GetContexts (line 71) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Cont...
    type IGetLinkedInvocationsProxy (line 74) | public partial interface IGetLinkedInvocationsProxy {
      method GetLinkedInvocations (line 75) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Invo...
    type IGetAllLinkedInvocationsProxy (line 78) | public partial interface IGetAllLinkedInvocationsProxy {
      method GetAllLinkedInvocations (line 79) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Cont...
    type IAppJoinedContextStreamProxy (line 82) | public partial interface IAppJoinedContextStreamProxy {
      method AppJoinedContextStream (line 83) | IServerStreamingMethodCall<global::Plexus.Interop.Apps.Internal.Gene...
    type IRestoreContextsLinkageProxy (line 86) | public partial interface IRestoreContextsLinkageProxy {
      method RestoreContextsLinkage (line 87) | IUnaryMethodCall<global::Plexus.Interop.Apps.Internal.Generated.Rest...
    type IContextLoadedStreamImpl (line 90) | public partial interface IContextLoadedStreamImpl {
      method ContextLoadedStream (line 91) | Task ContextLoadedStream(global::Plexus.Interop.Apps.Internal.Genera...
    type ICreateContextImpl (line 94) | public partial interface ICreateContextImpl {
      method CreateContext (line 95) | Task<global::Plexus.Interop.Apps.Internal.Generated.Context> CreateC...
    type ICreateContext2Impl (line 98) | public partial interface ICreateContext2Impl {
      method CreateContext2 (line 99) | Task<global::Plexus.Interop.Apps.Internal.Generated.Context> CreateC...
    type IJoinContextImpl (line 102) | public partial interface IJoinContextImpl {
      method JoinContext (line 103) | Task<global::Google.Protobuf.WellKnownTypes.Empty> JoinContext(globa...
    type IGetContextsImpl (line 106) | public partial interface IGetContextsImpl {
      method GetContexts (line 107) | Task<global::Plexus.Interop.Apps.Internal.Generated.ContextsList> Ge...
    type IGetLinkedInvocationsImpl (line 110) | public partial interface IGetLinkedInvocationsImpl {
      method GetLinkedInvocations (line 111) | Task<global::Plexus.Interop.Apps.Internal.Generated.InvocationsList>...
    type IGetAllLinkedInvocationsImpl (line 114) | public partial interface IGetAllLinkedInvocationsImpl {
      method GetAllLinkedInvocations (line 115) | Task<global::Plexus.Interop.Apps.Internal.Generated.ContextToInvocat...
    type IAppJoinedContextStreamImpl (line 118) | public partial interface IAppJoinedContextStreamImpl {
      method AppJoinedContextStream (line 119) | Task AppJoinedContextStream(global::Google.Protobuf.WellKnownTypes.E...
    type IRestoreContextsLinkageImpl (line 122) | public partial interface IRestoreContextsLinkageImpl {
      method RestoreContextsLinkage (line 123) | Task<global::Plexus.Interop.Apps.Internal.Generated.RestoreContextsL...
    class Descriptor (line 126) | public sealed partial class Descriptor {
      method Descriptor (line 138) | public Descriptor() {
      method Descriptor (line 150) | public Descriptor(string alias) {

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/InvocationDescriptor.msg.g.cs
  class InvocationDescriptorReflection (line 31) | internal static partial class InvocationDescriptorReflection {
    method InvocationDescriptorReflection (line 40) | static InvocationDescriptorReflection() {
  class InvocationDescriptor (line 62) | internal sealed partial class InvocationDescriptor : pb::IMessage<Invoca...
    method InvocationDescriptor (line 85) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 91) | partial void OnConstruction();
    method InvocationDescriptor (line 93) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 104) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 170) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 176) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 193) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 208) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 214) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 247) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 276) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 301) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 331) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 375) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/NativeAppLauncher.app.g.cs
  type INativeAppLauncherClient (line 32) | internal partial interface INativeAppLauncherClient: IClient {
  class NativeAppLauncherClient (line 35) | internal sealed partial class NativeAppLauncherClient: ClientBase, INati...
    method CreateClientOptions (line 39) | private static ClientOptions CreateClientOptions(NativeAppLauncherClie...
    method NativeAppLauncherClient (line 48) | public NativeAppLauncherClient(
    method NativeAppLauncherClient (line 56) | public NativeAppLauncherClient(NativeAppLauncherClient.ServiceBinder s...
    class ServiceBinder (line 60) | public sealed partial class ServiceBinder {
      method ServiceBinder (line 62) | public ServiceBinder(
      method Bind (line 70) | public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) {
    type IAppLauncherServiceImpl (line 76) | public partial interface IAppLauncherServiceImpl:
    class AppLauncherServiceBinder (line 81) | private sealed partial class AppLauncherServiceBinder {
      method AppLauncherServiceBinder (line 86) | public AppLauncherServiceBinder(IAppLauncherServiceImpl impl) {
      method Bind (line 90) | public ClientOptionsBuilder Bind(ClientOptionsBuilder builder) {
      method Bind (line 94) | private ProvidedServiceDefinition.Builder Bind(ProvidedServiceDefini...
    class AppLauncherServiceImpl (line 101) | public sealed partial class AppLauncherServiceImpl: IAppLauncherServic...
      method AppLauncherServiceImpl (line 106) | public AppLauncherServiceImpl(
      method Launch (line 114) | public Task<global::Plexus.Interop.Apps.Internal.Generated.AppLaunch...
      method AppLaunchedEventStream (line 118) | public Task AppLaunchedEventStream(global::Google.Protobuf.WellKnown...
      method AppLauncherServiceImpl (line 130) | public AppLauncherServiceImpl(T impl) {
      method Launch (line 134) | public Task<global::Plexus.Interop.Apps.Internal.Generated.AppLaunch...
      method AppLaunchedEventStream (line 138) | public Task AppLaunchedEventStream(global::Google.Protobuf.WellKnown...
    class AppLauncherServiceImpl (line 123) | public sealed partial class AppLauncherServiceImpl<T>: IAppLauncherSer...
      method AppLauncherServiceImpl (line 106) | public AppLauncherServiceImpl(
      method Launch (line 114) | public Task<global::Plexus.Interop.Apps.Internal.Generated.AppLaunch...
      method AppLaunchedEventStream (line 118) | public Task AppLaunchedEventStream(global::Google.Protobuf.WellKnown...
      method AppLauncherServiceImpl (line 130) | public AppLauncherServiceImpl(T impl) {
      method Launch (line 134) | public Task<global::Plexus.Interop.Apps.Internal.Generated.AppLaunch...
      method AppLaunchedEventStream (line 138) | public Task AppLaunchedEventStream(global::Google.Protobuf.WellKnown...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/Options.msg.g.cs
  class OptionsReflection (line 31) | internal static partial class OptionsReflection {
    method OptionsReflection (line 40) | static OptionsReflection() {
  class OptionsExtensions (line 58) | internal static partial class OptionsExtensions {

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/UniqueId.msg.g.cs
  class UniqueIdReflection (line 31) | internal static partial class UniqueIdReflection {
    method UniqueIdReflection (line 40) | static UniqueIdReflection() {
  class UniqueId (line 62) | internal sealed partial class UniqueId : pb::IMessage<UniqueId>
    method UniqueId (line 85) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method OnConstruction (line 91) | partial void OnConstruction();
    method UniqueId (line 93) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Clone (line 101) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 131) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method Equals (line 137) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method GetHashCode (line 151) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method ToString (line 163) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method WriteTo (line 169) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalWriteTo (line 190) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method CalculateSize (line 207) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 223) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method MergeFrom (line 238) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    method InternalMergeFrom (line 264) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppLaunchedEventProvider.cs
  type IAppLaunchedEventProvider (line 22) | internal interface IAppLaunchedEventProvider

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppLifecycleManagerClientClientRepository.cs
  type IAppLifecycleManagerClientClientRepository (line 23) | internal interface IAppLifecycleManagerClientClientRepository
    method GetClientObservable (line 25) | IObservable<AppLifecycleManagerClient> GetClientObservable();
    method GetClientAsync (line 26) | Task<AppLifecycleManagerClient> GetClientAsync();

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppRegistryProvider.cs
  type IAppRegistryProvider (line 21) | internal interface IAppRegistryProvider

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/InteropContext.cs
  class InteropContext (line 27) | internal class InteropContext : ProcessBase, IInteropContext
    method InteropContext (line 47) | public InteropContext(Plexus.UniqueId trustedLauncherId, string metada...
    method StartCoreAsync (line 73) | protected override Task<Task> StartCoreAsync()
    method StartNativeAppLauncherClient (line 79) | private async Task StartNativeAppLauncherClient()
    method CreateAppLifecycleManagerClient (line 85) | private AppLifecycleManagerClient CreateAppLifecycleManagerClient()

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/InteropContextFactory.cs
  class InteropContextFactory (line 21) | public sealed class InteropContextFactory
    method Create (line 25) | public IInteropContext Create(UniqueId trustedLauncherId, string metad...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/JsonFileAppRegistryProvider.cs
  class JsonFileAppRegistryProvider (line 21) | internal sealed class JsonFileAppRegistryProvider : BaseJsonFileRegistry...
    method JsonFileAppRegistryProvider (line 23) | public JsonFileAppRegistryProvider(string jsonFileName) : base(jsonFil...
    method ParseRegistry (line 26) | public override AppRegistry ParseRegistry(string registryContent)

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/NativeAppLauncherClient.cs
  class NativeAppLauncherClient (line 28) | internal sealed class NativeAppLauncherClient : ProcessBase, Generated.N...
    method NativeAppLauncherClient (line 37) | public NativeAppLauncherClient(string cmdBasePath, Plexus.UniqueId id)
    method StartCoreAsync (line 46) | protected override async Task<Task> StartCoreAsync()
    method Launch (line 56) | Task<AppLaunchResponse> AppLauncherService.ILaunchImpl.Launch(AppLaunc...
    method AppLaunchedEventStream (line 70) | Task AppLauncherService.IAppLaunchedEventStreamImpl.AppLaunchedEventSt...
    method ProcessAsync (line 85) | private async Task ProcessAsync()

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/NativeAppLauncherParamsDto.cs
  class NativeAppLauncherParamsDto (line 21) | [DataContract]

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/ObservableExtensions.cs
  class ObservableExtensions (line 27) | public static class ObservableExtensions
    method PipeAsync (line 29) | public static Task PipeAsync<T>(
    method WriteAsync (line 41) | private static async Task WriteAsync<T>(
    method PipeAsync (line 59) | public static Task PipeAsync<T>(

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/ProtobufHelper.cs
  class ProtobufHelper (line 22) | internal static class ProtobufHelper
    method ToUniqueId (line 24) | public static UniqueId ToUniqueId(this Generated.UniqueId uniqueId)
    method ToProto (line 33) | public static Generated.UniqueId ToProto(this UniqueId id)
    method ToProto (line 42) | public static Generated.TransportType ToProto(this TransportType trans...
    method ToProto (line 53) | public static Generated.AppConnectionDescriptor ToProto(this AppConnec...
    method ToProto (line 64) | public static Generated.InvocationDescriptor ToProto(this InvocationDe...
    method ToProto (line 76) | public static Generated.InvocationResult ToProto(this InvocationResult...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppLifecycleServiceImpl.cs
  class AppLifecycleServiceImpl (line 32) | internal class AppLifecycleServiceImpl : IAppLifecycleService
    method AppLifecycleServiceImpl (line 44) | public AppLifecycleServiceImpl(IAppLifecycleManager appLifecycleManager)
    method OnInvocationStarted (line 50) | public void OnInvocationStarted(InvocationStartedEventDescriptor event...
    method OnInvocationFinished (line 61) | public void OnInvocationFinished(InvocationFinishedEventDescriptor eve...
    method BroadcastConnectionEvents (line 74) | private void BroadcastConnectionEvents(AppConnectionEvent connectionEv...
    method ResolveApp (line 104) | public async Task<ResolveAppResponse> ResolveApp(ResolveAppRequest req...
    method GetLifecycleEventStream (line 141) | public Task GetLifecycleEventStream(Empty request, IWritableChannel<Ap...
    method GetInvocationEventStream (line 146) | public Task GetInvocationEventStream(Empty request, IWritableChannel<I...
    method Convert (line 151) | private static ResolveMode Convert(AppLaunchMode launchMode)
    method GetConnections (line 164) | public Task<GetConnectionsResponse> GetConnections(GetConnectionsReque...
    method GetConnectionsStream (line 183) | public async Task GetConnectionsStream(GetConnectionsRequest request, ...
    method CreateInitialGetConnectionsEvent (line 193) | private GetConnectionsEvent CreateInitialGetConnectionsEvent(GetConnec...
    method CreateGetConnectionsEvent (line 201) | private GetConnectionsEvent CreateGetConnectionsEvent(GetConnectionsRe...
    method IsEventFitRequest (line 217) | private static bool IsEventFitRequest(GetConnectionsRequest request, A...
    method IsSingleConnectionRequest (line 240) | private static bool IsSingleConnectionRequest(GetConnectionsRequest re...
    method IsSpecificConnectionId (line 245) | private static bool IsSpecificConnectionId(GetConnectionsRequest reque...
    method IsSpecificAppIdWithInstanceId (line 252) | private static bool IsSpecificAppIdWithInstanceId(GetConnectionsReques...
    method GetOnlineConnections (line 260) | private IEnumerable<IAppConnection> GetOnlineConnections(GetConnection...
    method CreateConnectionsResponse (line 295) | private static GetConnectionsResponse CreateConnectionsResponse(IEnume...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppMetadataServiceImpl.cs
  class AppMetadataServiceImpl (line 29) | internal class AppMetadataServiceImpl : IAppMetadataService
    method AppMetadataServiceImpl (line 34) | public AppMetadataServiceImpl(IAppRegistryProvider appRegistryProvider...
    method GetAppMetadataChangedEventStream (line 43) | public async Task GetAppMetadataChangedEventStream(Empty request, IWri...
    method GetMetamodelChangedEventStream (line 48) | public async Task GetMetamodelChangedEventStream(Empty request, IWrita...
    method ConvertToAppRegistryChangedEvent (line 53) | private static AppMetadataChangedEvent ConvertToAppRegistryChangedEven...
    method ConvertToMetamodelChangedEvent (line 67) | private MetamodelChangedEvent ConvertToMetamodelChangedEvent(IRegistry...
    method ConvertToAppMetamodelInfo (line 86) | internal static AppMetamodelInfo ConvertToAppMetamodelInfo(IApplicatio...
    method ConvertToMethodType (line 112) | private MethodInfo.Types.MethodType ConvertToMethodType(Metamodel.Meth...
    method ConvertLaunchMode (line 129) | private static ProvidedMethod.Types.MetamodelLaunchMode ConvertLaunchM...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppRegistrationServiceImpl.cs
  class AppRegistrationServiceImpl (line 23) | internal class AppRegistrationServiceImpl : AppLifecycleManagerClient.IA...
    method AppRegistrationServiceImpl (line 27) | public AppRegistrationServiceImpl(IAppLifecycleManager appLifecycleMan...
    method RegisterInstanceId (line 32) | public Task<RegisterInstanceIdResponse> RegisterInstanceId(RegisterIns...
    method RequestInstanceId (line 38) | public Task<UniqueId> RequestInstanceId(RequestInstanceIdRequest reque...
    method RegisterInstanceId (line 45) | private void RegisterInstanceId(Plexus.UniqueId appInstanceId)

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/AppConnectionsSet.cs
  class AppConnectionsSet (line 43) | internal class AppConnectionsSet
    method AppConnectionsSet (line 54) | public AppConnectionsSet(UniqueId appInstanceId)
    method AppLaunched (line 62) | public void AppLaunched(IEnumerable<string> appIds)
    method AppConnected (line 82) | public void AppConnected(AppConnectionDescriptor appConnection)
    method AppDisconnected (line 103) | public void AppDisconnected(AppConnectionDescriptor appConnection)
    method GetOnlineConnections (line 119) | public IReadOnlyCollection<AppConnectionDescriptor> GetOnlineConnectio...
    method GetConnections (line 138) | public IReadOnlyCollection<(UniqueId AppInstanceId, string AppId, Mayb...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/AppContextBindingEvent.cs
  class AppContextBindingEvent (line 19) | internal class AppContextBindingEvent
    method AppContextBindingEvent (line 21) | public AppContextBindingEvent(Context context, UniqueId appInstanceId)

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/Context.cs
  class Context (line 41) | internal class Context
    method Context (line 59) | public Context(IAppLifecycleManager appLifecycleManager, string kind, ...
    method AppLaunched (line 68) | public void AppLaunched(UniqueId appInstanceId, IEnumerable<string> ap...
    method AppConnected (line 80) | public void AppConnected(AppConnectionDescriptor appConnection)
    method AppDisconnected (line 87) | public void AppDisconnected(AppConnectionDescriptor appConnection)
    method GetOrCreateAppConnectionsSet (line 98) | private AppConnectionsSet GetOrCreateAppConnectionsSet(UniqueId appIns...
    method AppConnectionUpdated (line 114) | private void AppConnectionUpdated(Unit unit)
    method GetConnectedApps (line 119) | public IReadOnlyCollection<AppConnectionDescriptor> GetConnectedApps()
    method GetAppsInContext (line 138) | public IReadOnlyCollection<(UniqueId AppInstanceId, string AppId, Mayb...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/ContextsSet.cs
  class ContextsSet (line 42) | internal class ContextsSet
    method ContextsSet (line 54) | public ContextsSet(IAppLifecycleManager appLifecycleManager)
    method CreateContext (line 60) | public Context CreateContext(string kind, UniqueId ownerAppInstanceId)
    method GetContextsOf (line 68) | public IReadOnlyCollection<Context> GetContextsOf(UniqueId appInstanceId)
    method GetContext (line 80) | public Context GetContext(string contextId)
    method BindContext (line 89) | private void BindContext(AppContextBindingEvent bindingEvent)
    method GetAllContexts (line 109) | public IReadOnlyCollection<Context> GetAllContexts()

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkageServiceImpl.cs
  class ContextLinkageServiceImpl (line 38) | internal class ContextLinkageServiceImpl : AppLifecycleManagerClient.ICo...
    method ContextLinkageServiceImpl (line 46) | public ContextLinkageServiceImpl(IRegistryProvider appRegistryProvider...
    method CreateContext (line 56) | public Task<ContextDto> CreateContext(Empty request, MethodCallContext...
    method CreateContext2 (line 59) | public Task<ContextDto> CreateContext2(CreateContextRequest request, M...
    method OnAppLaunched (line 72) | private void OnAppLaunched(AppLaunchedEvent appLaunchedEvent)
    method OnAppConnectedOrDisconnected (line 94) | private void OnAppConnectedOrDisconnected(AppConnectionEvent connectio...
    method JoinContext (line 112) | public Task<Empty> JoinContext(ContextDto request, MethodCallContext c...
    method GetContexts (line 129) | public Task<ContextsList> GetContexts(Empty request, MethodCallContext...
    method GetLinkedInvocations (line 141) | public Task<InvocationsList> GetLinkedInvocations(ContextDto request, ...
    method GetAllLinkedInvocations (line 155) | public Task<ContextToInvocationsList> GetAllLinkedInvocations(Empty re...
    method ContextLoadedStream (line 171) | public async Task ContextLoadedStream(ContextDto request, IWritableCha...
    method CreateInvocationsList (line 200) | private InvocationsList CreateInvocationsList(Context context)
    method ConvertToProto (line 215) | private static Generated.AppConnectionDescriptor ConvertToProto(AppCon...
    method GetAppInfo (line 225) | private AppMetamodelInfo GetAppInfo(string appId)
    method IsContextShouldBeConsidered (line 231) | public bool IsContextShouldBeConsidered(IContextLinkageOptions context...
    method GetAppsInContexts (line 238) | public IReadOnlyCollection<(UniqueId AppInstanceId, string AppId, Mayb...
    method GetApplicationContexts (line 247) | private IReadOnlyCollection<string> GetApplicationContexts(IContextLin...
    method AppJoinedContextStream (line 261) | public Task AppJoinedContextStream(Empty request, IWritableChannel<App...
    method RestoreContextsLinkage (line 272) | public Task<RestoreContextsLinkageResponse> RestoreContextsLinkage(Res...
    method ConvertContextToProto (line 317) | private static ContextDto ConvertContextToProto(Context context, Uniqu...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/IAppLifecycleService.cs
  type IAppLifecycleService (line 21) | internal interface IAppLifecycleService : IInvocationEventProvider, AppL...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/IAppMetadataService.cs
  type IAppMetadataService (line 21) | internal interface IAppMetadataService : AppLifecycleManagerClient.IAppM...

FILE: desktop/src/Plexus.Interop.Apps.Manager/Internal/SubProcessLauncher.cs
  class SubProcessLauncher (line 23) | internal sealed class SubProcessLauncher
    method Launch (line 29) | public UniqueId Launch(string cmd, string args, string workingDir = null)

FILE: desktop/src/Plexus.Interop.Broker.Core.Tests/RegistryServiceTests.cs
  class RegistryServiceTests (line 25) | public sealed class RegistryServiceTests : TestsSuite
    method RegistryServiceTests (line 29) | public RegistryServiceTests()
    method CanResolveEmbeddedMethods (line 34) | [Fact]

FILE: desktop/src/Plexus.Interop.Broker.Core/BrokerException.cs
  class BrokerException (line 21) | public sealed class BrokerException : Exception
    method BrokerException (line 23) | public BrokerException(string message, Exception innerException = null...

FILE: desktop/src/Plexus.Interop.Broker.Core/BrokerProcessorFactory.cs
  class BrokerProcessorFactory (line 25) | public sealed class BrokerProcessorFactory
    method Create (line 29) | public IBrokerProcessor Create(

FILE: desktop/src/Plexus.Interop.Broker.Core/IBrokerProcessor.cs
  type IBrokerProcessor (line 21) | public interface IBrokerProcessor
    method StartAsync (line 25) | Task StartAsync();

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/AppConnectionProcessor.cs
  class AppConnectionProcessor (line 27) | internal sealed class AppConnectionProcessor : IAppConnectionProcessor
    method AppConnectionProcessor (line 35) | public AppConnectionProcessor(IAppConnection connection, IClientReques...
    method ProcessAsync (line 45) | public async Task ProcessAsync(Action connectionCompletedAction)
    method HandleChannel (line 68) | private void HandleChannel(ITransportChannel channel)
    method HandleChannelAsync (line 79) | private async Task HandleChannelAsync(object state)
    method OnTaskCompleted (line 94) | private void OnTaskCompleted(Task task, object state)

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/AuthenticationHandler.cs
  class AuthenticationHandler (line 26) | internal sealed class AuthenticationHandler : IAuthenticationHandler
    method AuthenticationHandler (line 36) | public AuthenticationHandler(
    method AuthenticateAsync (line 49) | public async Task<AppConnectionDescriptor> AuthenticateAsync(ITranspor...

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/BrokerProcessor.cs
  class BrokerProcessor (line 29) | internal sealed class BrokerProcessor : ProcessBase, IBrokerProcessor
    method BrokerProcessor (line 41) | public BrokerProcessor(
    method StartCoreAsync (line 57) | protected override Task<Task> StartCoreAsync()
    method ProcessAsync (line 62) | private async Task ProcessAsync()
    method ProcessConnectionAsync (line 113) | private async Task ProcessConnectionAsync(object state)
    method OnConnectionProcessed (line 133) | private void OnConnectionProcessed(Task completion, object state)

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/BrokerRegistryProvider.cs
  class BrokerRegistryProvider (line 24) | internal sealed class BrokerRegistryProvider : IRegistryProvider, IDispo...
    method BrokerRegistryProvider (line 29) | public BrokerRegistryProvider(IRegistryProvider baseRegistryProvider)
    method OnUpdated (line 42) | private void OnUpdated(IRegistry registry)
    method Dispose (line 48) | public void Dispose()

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/ClientRequestHandler.cs
  class ClientRequestHandler (line 28) | internal sealed class ClientRequestHandler : IClientRequestHandler
    method ClientRequestHandler (line 37) | public ClientRequestHandler(
    method HandleChannelAsync (line 54) | public async Task HandleChannelAsync(IAppConnection connection, ITrans...
    method HandleDiscoveryAsync (line 74) | private async Task HandleDiscoveryAsync(
    method HandleDiscoveryAsync (line 82) | private async Task HandleDiscoveryAsync(IMethodDiscoveryRequest reques...
    method HandleInvocationAsync (line 88) | private async Task HandleInvocationAsync(

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/DiscoveryRequestHandler.cs
  class DiscoveryRequestHandler (line 31) | internal sealed class DiscoveryRequestHandler : IDiscoveryRequestHandler
    method DiscoveryRequestHandler (line 40) | public DiscoveryRequestHandler(
    method HandleAsync (line 52) | public async Task HandleAsync(
    method HandleAsync (line 160) | public async Task HandleAsync(
    method Convert (line 234) | private IDiscoveredMethod Convert(IProvidedMethod pm, Maybe<UniqueId> ...
    method Convert (line 253) | private static MethodType Convert(Metamodel.MethodType methodType)
    method FilterAvailableApps (line 270) | private IEnumerable<string> FilterAvailableApps(string[] providerApps)

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IAppConnectionProcessor.cs
  type IAppConnectionProcessor (line 22) | internal interface IAppConnectionProcessor
    method ProcessAsync (line 26) | Task ProcessAsync(Action connectionCompletedAction);

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IAuthenticationHandler.cs
  type IAuthenticationHandler (line 22) | internal interface IAuthenticationHandler
    method AuthenticateAsync (line 24) | Task<AppConnectionDescriptor> AuthenticateAsync(ITransportConnection c...

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IClientRequestHandler.cs
  type IClientRequestHandler (line 23) | internal interface IClientRequestHandler
    method HandleChannelAsync (line 25) | Task HandleChannelAsync(IAppConnection connection, ITransportChannel c...

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IDiscoveryRequestHandler.cs
  type IDiscoveryRequestHandler (line 24) | internal interface IDiscoveryRequestHandler
    method HandleAsync (line 26) | Task HandleAsync(
    method HandleAsync (line 31) | Task HandleAsync(

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IInvocationRequestHandler.cs
  type IInvocationRequestHandler (line 24) | internal interface IInvocationRequestHandler
    method HandleAsync (line 26) | Task HandleAsync(IInvocationStart request, IAppConnection sourceConnec...

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/IRegistryService.cs
  type IRegistryService (line 23) | internal interface IRegistryService
    method GetApplication (line 25) | IApplication GetApplication(string appId);
    method GetConsumedService (line 27) | IConsumedService GetConsumedService(string appId, IConsumedServiceRefe...
    method GetConsumedMethod (line 29) | IConsumedMethod GetConsumedMethod(string appId, IConsumedMethodReferen...
    method GetProvidedService (line 31) | IProvidedService GetProvidedService(IProvidedServiceReference reference);
    method GetProvidedMethod (line 33) | IProvidedMethod GetProvidedMethod(IProvidedMethodReference reference);
    method GetMatchingProvidedMethods (line 35) | IReadOnlyCollection<IProvidedMethod> GetMatchingProvidedMethods(IConsu...
    method GetMatchingProvidedMethods (line 37) | IReadOnlyCollection<IProvidedMethod> GetMatchingProvidedMethods(string...
    method GetMatchingProvidedMethods (line 39) | IReadOnlyCollection<IProvidedMethod> GetMatchingProvidedMethods(IAppli...
    method GetMatchingProvidedMethods (line 41) | IReadOnlyCollection<IProvidedMethod> GetMatchingProvidedMethods(string...
    method IsApplicationDefined (line 43) | bool IsApplicationDefined(string appId);
    method GetMethodMatches (line 45) | IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod Provide...
    method GetMethodMatches (line 49) | IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod Provide...

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/InvocationRequestHandler.cs
  class InvocationRequestHandler (line 32) | internal sealed class InvocationRequestHandler : IInvocationRequestHandler
    method InvocationRequestHandler (line 48) | public InvocationRequestHandler(
    method HandleAsync (line 66) | public async Task HandleAsync(IInvocationStart request, IAppConnection...
    method OnActionFinished (line 159) | private void OnActionFinished(InvocationDescriptor callDescriptor, Inv...
    method ResolveTargetConnectionAsync (line 172) | private async ValueTask<IAppConnection> ResolveTargetConnectionAsync(
    method ResolveTargetConnectionAsync (line 268) | private async ValueTask<IAppConnection> ResolveTargetConnectionAsync(
    method ConvertToResolveMode (line 354) | private static ResolveMode ConvertToResolveMode(LaunchMode launchMode)
    method GetLaunchMode (line 367) | private static LaunchMode GetLaunchMode(IProvidedMethod method)
    method CreateInvocationTarget (line 378) | private IInvocationStartRequested CreateInvocationTarget(IProvidedMeth...
    method CreateInvocationTarget (line 389) | private IInvocationStartRequested CreateInvocationTarget(IConsumedMeth...
    method DisposeFrame (line 400) | private static void DisposeFrame(TransportMessageFrame frame)
    method PropagateAsync (line 405) | private static async Task PropagateAsync(ITransportChannel source, ITr...

FILE: desktop/src/Plexus.Interop.Broker.Core/Internal/RegistryService.cs
  class RegistryService (line 28) | internal sealed class RegistryService : IRegistryService, IDisposable
    method RegistryService (line 43) | public RegistryService(IRegistryProvider registryProvider)
    method OnUpdated (line 53) | private void OnUpdated(IRegistry registry)
    method GetApplication (line 70) | public IApplication GetApplication(string appId)
    method GetConsumedService (line 87) | public IConsumedService GetConsumedService(string appId, IConsumedServ...
    method GetConsumedMethod (line 107) | public IConsumedMethod GetConsumedMethod(string appId, IConsumedMethod...
    method GetProvidedService (line 126) | public IProvidedService GetProvidedService(IProvidedServiceReference r...
    method GetProvidedMethod (line 145) | public IProvidedMethod GetProvidedMethod(IProvidedMethodReference refe...
    method GetMatchingProvidedMethods (line 158) | public IReadOnlyCollection<IProvidedMethod> GetMatchingProvidedMethods...
    method GetMatchingProvidedMethods (line 173) | public IReadOnlyCollection<IProvidedMethod> GetMatchingProvidedMethods...
    method GetMatchingProvidedMethods (line 186) | public IReadOnlyCollection<IProvidedMethod> GetMatchingProvidedMethods...
    method GetMatchingProvidedMethods (line 217) | public IReadOnlyCollection<IProvidedMethod> GetMatchingProvidedMethods...
    method IsApplicationDefined (line 230) | public bool IsApplicationDefined(string appId)
    method GetMatchingConsumedMethods (line 235) | public IReadOnlyCollection<IConsumedMethod> GetMatchingConsumedMethods...
    method GetMethodMatches (line 263) | public IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod ...
    method GetMethodMatchesByConsumedService (line 280) | private IEnumerable<IProvidedMethod> GetMethodMatchesByConsumedService...
    method GetMethodMatches (line 284) | public IReadOnlyCollection<(IConsumedMethod Consumed, IProvidedMethod ...
    method Dispose (line 302) | public void Dispose()

FILE: desktop/src/Plexus.Interop.Broker/BrokerFactory.cs
  class BrokerFactory (line 21) | public sealed class BrokerFactory
    method Create (line 25) | public IBroker Create(BrokerOptions options, IRegistryProvider registr...

FILE: desktop/src/Plexus.Interop.Broker/BrokerIsAlreadyRunningException.cs
  class BrokerIsAlreadyRunningException (line 21) | [Serializable]
    method BrokerIsAlreadyRunningException (line 24) | public BrokerIsAlreadyRunningException(string workingDir)

FILE: desktop/src/Plexus.Interop.Broker/BrokerOptions.cs
  class BrokerOptions (line 19) | public sealed class BrokerOptions
    method BrokerOptions (line 25) | public BrokerOptions(
    method ToString (line 35) | public override string ToString() => string.Join(", ",

FILE: desktop/src/Plexus.Interop.Broker/IBroker.cs
  type IBroker (line 21) | public interface IBroker
    method StartAsync (line 25) | Task StartAsync();
    method Stop (line 26) | void Stop();

FILE: desktop/src/Plexus.Interop.Broker/Internal/Broker.cs
  class Broker (line 41) | internal sealed class Broker : ProcessBase, IBroker
    method Broker (line 58) | public Broker(BrokerOptions options, IRegistryProvider registryProvide...
    method GetCertificate (line 116) | private X509Certificate2 GetCertificate()
    method StartCoreAsync (line 141) | protected override async Task<Task> StartCoreAsync()
    method ProcessAsync (line 154) | private async Task ProcessAsync()

FILE: desktop/src/Plexus.Interop.Broker/Internal/ServerConnectionListener.cs
  class ServerConnectionListener (line 27) | internal sealed class ServerConnectionListener : ProcessBase
    method ServerConnectionListener (line 32) | public ServerConnectionListener(IEnumerable<ITransportServer> servers)
    method StartCoreAsync (line 41) | protected override async Task<Task> StartCoreAsync()
    method StartServerAsync (line 50) | private async Task<ITransportServer> StartServerAsync(ITransportServer...
    method ProcessAsync (line 65) | private async Task ProcessAsync(IEnumerable<ITransportServer> servers)
    method ProcessAsync (line 72) | private async Task ProcessAsync(ITransportServer server)
    method ProcessAsync (line 89) | private async Task ProcessAsync(ITransportConnection connection)

FILE: desktop/src/Plexus.Interop.Client.Core/ClientDiscoveryInvokerExtensions.cs
  class ClientDiscoveryInvokerExtensions (line 23) | public static class ClientDiscoveryInvokerExtensions
    method DiscoverAsync (line 25) | public static Task<IReadOnlyCollection<DiscoveredMethod<TRequest, Noth...
    method DiscoverOnlineAsync (line 31) | public static Task<IReadOnlyCollection<DiscoveredMethod<TRequest, Noth...
    method DiscoverAsync (line 37) | public static Task<IReadOnlyCollection<DiscoveredMethod<TRequest, TRes...
    method DiscoverOnlineAsync (line 43) | public static Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest...
    method DiscoverAsync (line 49) | public static async Task<IReadOnlyCollection<DiscoveredUnaryMethod<TRe...
    method DiscoverAsync (line 58) | public static Task<IReadOnlyCollection<DiscoveredUnaryMethod<TRequest,...
    method DiscoverOnlineAsync (line 64) | public static async Task<IReadOnlyCollection<DiscoveredOnlineUnaryMeth...
    method DiscoverOnlineAsync (line 73) | public static Task<IReadOnlyCollection<DiscoveredOnlineUnaryMethod<TRe...
    method DiscoverInCurrentContextAsync (line 79) | public static async Task<IReadOnlyCollection<DiscoveredOnlineUnaryMeth...
    method DiscoverAsync (line 86) | public static async Task<IReadOnlyCollection<DiscoveredServerStreaming...
    method DiscoverAsync (line 95) | public static Task<IReadOnlyCollection<DiscoveredServerStreamingMethod...
    method DiscoverOnlineAsync (line 101) | public static async Task<IReadOnlyCollection<DiscoveredOnlineServerStr...
    method DiscoverOnlineAsync (line 110) | public static Task<IReadOnlyCollection<DiscoveredOnlineServerStreaming...
    method DiscoverAsync (line 116) | public static async Task<IReadOnlyCollection<DiscoveredClientStreaming...
    method DiscoverAsync (line 125) | public static Task<IReadOnlyCollection<DiscoveredClientStreamingMethod...
    method DiscoverOnlineAsync (line 131) | public static async Task<IReadOnlyCollection<DiscoveredOnlineClientStr...
    method DiscoverOnlineAsync (line 140) | public static Task<IReadOnlyCollection<DiscoveredOnlineClientStreaming...
    method DiscoverAsync (line 146) | public static async Task<IReadOnlyCollection<DiscoveredDuplexStreaming...
    method DiscoverAsync (line 155) | public static Task<IReadOnlyCollection<DiscoveredDuplexStreamingMethod...
    method DiscoverOnlineAsync (line 161) | public static async Task<IReadOnlyCollection<DiscoveredOnlineDuplexStr...
    method DiscoverOnlineAsync (line 170) | public static Task<IReadOnlyCollection<DiscoveredOnlineDuplexStreaming...

FILE: desktop/src/Plexus.Interop.Client.Core/ClientFactory.cs
  class ClientFactory (line 24) | public sealed class ClientFactory : IClientFactory
    method Create (line 28) | public IClient Create(ClientOptions options)
    method Create (line 33) | public IClient Create(

FILE: desktop/src/Plexus.Interop.Client.Core/ClientOptions.cs
  class ClientOptions (line 24) | public sealed class ClientOptions
    method ClientOptions (line 26) | internal ClientOptions(
    method ToString (line 61) | public override string ToString()

FILE: desktop/src/Plexus.Interop.Client.Core/ClientOptionsBuilder.cs
  class ClientOptionsBuilder (line 25) | public sealed class ClientOptionsBuilder
    method WithBrokerWorkingDir (line 44) | public ClientOptionsBuilder WithBrokerWorkingDir(string brokerWorkingDir)
    method WithApplicationId (line 50) | public ClientOptionsBuilder WithApplicationId(string applicationId)
    method WithAppInstanceId (line 56) | public ClientOptionsBuilder WithAppInstanceId(UniqueId instanceId)
    method WithTransport (line 62) | public ClientOptionsBuilder WithTransport(ITransportClient transport)
    method WithProtocol (line 68) | public ClientOptionsBuilder WithProtocol(IProtocolImplementation proto...
    method WithMarshaller (line 74) | public ClientOptionsBuilder WithMarshaller(IMarshallerProvider marshal...
    method WithProvidedService (line 80) | public ClientOptionsBuilder WithProvidedService(string name, Func<Prov...
    method WithProvidedService (line 86) | public ClientOptionsBuilder WithProvidedService(string name, string al...
    method Build (line 92) | public ClientOptions Build()

FILE: desktop/src/Plexus.Interop.Client.Core/ContextLinkageOptions.cs
  class ContextLinkageOptions (line 21) | public sealed class ContextLinkageOptions
    method ContextLinkageOptions (line 23) | public ContextLinkageOptions(string specifiedContextId)
    method ContextLinkageOptions (line 29) | private ContextLinkageOptions(ContextLinkageDiscoveryMode mode)
    method WithCurrentContext (line 35) | public static ContextLinkageOptions WithCurrentContext() => new Contex...
  class ContextLinkageConvertor (line 42) | public static class ContextLinkageConvertor
    method Convert (line 44) | public static IContextLinkageOptions Convert(this ContextLinkageOption...
    method Convert (line 55) | public static IContextLinkageOptions Convert(this Maybe<ContextLinkage...
    method CreateDefaultContextLinkageOptions (line 65) | private static IContextLinkageOptions CreateDefaultContextLinkageOptio...

FILE: desktop/src/Plexus.Interop.Client.Core/DiscoveredMethod.cs
  class DiscoveredMethod (line 21) | public class DiscoveredMethod : IMethod
    method DiscoveredMethod (line 23) | internal DiscoveredMethod(
    method DiscoveredMethod (line 41) | internal DiscoveredMethod(
    method DiscoveredMethod (line 59) | internal DiscoveredMethod(DiscoveredMethod method) : this(
    method ToString (line 84) | public override string ToString()
    method DiscoveredMethod (line 130) | internal DiscoveredMethod(DiscoveredMethod method) : base(method)
  class DiscoveredOnlineMethod (line 90) | public class DiscoveredOnlineMethod : DiscoveredMethod
    method DiscoveredOnlineMethod (line 92) | internal DiscoveredOnlineMethod(
    method DiscoveredOnlineMethod (line 110) | internal DiscoveredOnlineMethod(DiscoveredMethod method) : this(
    method ToString (line 122) | public override string ToString()
    method DiscoveredOnlineMethod (line 137) | internal DiscoveredOnlineMethod(DiscoveredMethod method) : base(method)
  class DiscoveredMethod (line 128) | public class DiscoveredMethod<TRequest, TResponse> : DiscoveredMethod, I...
    method DiscoveredMethod (line 23) | internal DiscoveredMethod(
    method DiscoveredMethod (line 41) | internal DiscoveredMethod(
    method DiscoveredMethod (line 59) | internal DiscoveredMethod(DiscoveredMethod method) : this(
    method ToString (line 84) | public override string ToString()
    method DiscoveredMethod (line 130) | internal DiscoveredMethod(DiscoveredMethod method) : base(method)
  class DiscoveredOnlineMethod (line 135) | public class DiscoveredOnlineMethod<TRequest, TResponse> : DiscoveredOnl...
    method DiscoveredOnlineMethod (line 92) | internal DiscoveredOnlineMethod(
    method DiscoveredOnlineMethod (line 110) | internal DiscoveredOnlineMethod(DiscoveredMethod method) : this(
    method ToString (line 122) | public override string ToString()
    method DiscoveredOnlineMethod (line 137) | internal DiscoveredOnlineMethod(DiscoveredMethod method) : base(method)
  class DiscoveredUnaryMethod (line 142) | public sealed class DiscoveredUnaryMethod<TRequest, TResponse> : Discove...
    method DiscoveredUnaryMethod (line 144) | internal DiscoveredUnaryMethod(DiscoveredMethod method) : base(method)
  class DiscoveredServerStreamingMethod (line 149) | public sealed class DiscoveredServerStreamingMethod<TRequest, TResponse>...
    method DiscoveredServerStreamingMethod (line 151) | internal DiscoveredServerStreamingMethod(DiscoveredMethod method) : ba...
  class DiscoveredClientStreamingMethod (line 156) | public sealed class DiscoveredClientStreamingMethod<TRequest, TResponse>...
    method DiscoveredClientStreamingMethod (line 158) | internal DiscoveredClientStreamingMethod(DiscoveredMethod method) : ba...
  class DiscoveredDuplexStreamingMethod (line 163) | public sealed class DiscoveredDuplexStreamingMethod<TRequest, TResponse>...
    method DiscoveredDuplexStreamingMethod (line 165) | internal DiscoveredDuplexStreamingMethod(DiscoveredMethod method) : ba...
  class DiscoveredOnlineUnaryMethod (line 170) | public sealed class DiscoveredOnlineUnaryMethod<TRequest, TResponse> : D...
    method DiscoveredOnlineUnaryMethod (line 172) | internal DiscoveredOnlineUnaryMethod(DiscoveredMethod method) : base(m...
  class DiscoveredOnlineServerStreamingMethod (line 177) | public sealed class DiscoveredOnlineServerStreamingMethod<TRequest, TRes...
    method DiscoveredOnlineServerStreamingMethod (line 179) | internal DiscoveredOnlineServerStreamingMethod(DiscoveredMethod method...
  class DiscoveredOnlineClientStreamingMethod (line 184) | public sealed class DiscoveredOnlineClientStreamingMethod<TRequest, TRes...
    method DiscoveredOnlineClientStreamingMethod (line 186) | internal DiscoveredOnlineClientStreamingMethod(DiscoveredMethod method...
  class DiscoveredOnlineDuplexStreamingMethod (line 191) | public sealed class DiscoveredOnlineDuplexStreamingMethod<TRequest, TRes...
    method DiscoveredOnlineDuplexStreamingMethod (line 193) | internal DiscoveredOnlineDuplexStreamingMethod(DiscoveredMethod method...

FILE: desktop/src/Plexus.Interop.Client.Core/DiscoveredService.cs
  class DiscoveredService (line 22) | public sealed class DiscoveredService
    method DiscoveredService (line 24) | internal DiscoveredService(
    method ToString (line 40) | public override string ToString()
  class DiscoveredOnlineService (line 46) | public sealed class DiscoveredOnlineService
    method DiscoveredOnlineService (line 48) | internal DiscoveredOnlineService(
    method DiscoveredOnlineService (line 59) | internal DiscoveredOnlineService(DiscoveredService service)
    method ToString (line 75) | public override string ToString()

FILE: desktop/src/Plexus.Interop.Client.Core/IClient.cs
  type IClient (line 22) | public interface IClient : IDisposable
    method ConnectAsync (line 36) | Task ConnectAsync();
    method Disconnect (line 38) | void Disconnect();
    method DisconnectAsync (line 40) | Task DisconnectAsync();

FILE: desktop/src/Plexus.Interop.Client.Core/IClientCallInvoker.cs
  type IClientCallInvoker (line 19) | public interface IClientCallInvoker
    method Call (line 24) | IUnaryMethodCall Call<TRequest>(IUnaryMethod<TRequest, Nothing> method...
    method CallUnary (line 29) | IUnaryMethodCall CallUnary<TRequest>(MethodCallDescriptor descriptor, ...
    method Call (line 34) | IUnaryMethodCall<TResponse> Call<TRequest, TResponse>(IUnaryMethod<TRe...
    method CallUnary (line 39) | IUnaryMethodCall<TResponse> CallUnary<TRequest, TResponse>(MethodCallD...
    method Call (line 45) | IServerStreamingMethodCall<TResponse> Call<TRequest, TResponse>(IServe...
    method CallServerStreaming (line 51) | IServerStreamingMethodCall<TResponse> CallServerStreaming<TRequest, TR...
    method Call (line 57) | IClientStreamingMethodCall<TRequest, TResponse> Call<TRequest, TRespon...
    method CallClientStreaming (line 63) | IClientStreamingMethodCall<TRequest, TResponse> CallClientStreaming<TR...
    method Call (line 69) | IDuplexStreamingMethodCall<TRequest, TResponse> Call<TRequest, TRespon...
    method CallDuplexStreaming (line 75) | IDuplexStreamingMethodCall<TRequest, TResponse> CallDuplexStreaming<TR...

FILE: desktop/src/Plexus.Interop.Client.Core/IClientDiscoveryInvoker.cs
  type IClientDiscoveryInvoker (line 22) | public interface IClientDiscoveryInvoker
    method DiscoverAsync (line 24) | Task<IReadOnlyCollection<DiscoveredMethod>> DiscoverAsync(MethodDiscov...
    method DiscoverAsync (line 26) | Task<IReadOnlyCollection<DiscoveredMethod<TRequest, TResponse>>> Disco...
    method DiscoverAsync (line 28) | Task<IReadOnlyCollection<DiscoveredMethod<TRequest, Nothing>>> Discove...
    method DiscoverOnlineAsync (line 30) | Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest, TResponse>>>...
    method DiscoverOnlineAsync (line 32) | Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest, Nothing>>> D...
    method DiscoverAsync (line 34) | Task<IReadOnlyCollection<DiscoveredService>> DiscoverAsync(ServiceDisc...
    method DiscoverOnlineAsync (line 36) | Task<IReadOnlyCollection<DiscoveredOnlineService>> DiscoverOnlineAsync...
    method DiscoverInCurrentContextAsync (line 38) | Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest, TResponse>>>...
    method DiscoverInSpecificContextAsync (line 40) | Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest, TResponse>>>...
    method DiscoverInCurrentContextAsync (line 42) | Task<IReadOnlyCollection<DiscoveredOnlineService>> DiscoverInCurrentCo...
    method DiscoverInSpecificContextAsync (line 44) | Task<IReadOnlyCollection<DiscoveredOnlineService>> DiscoverInSpecificC...

FILE: desktop/src/Plexus.Interop.Client.Core/IClientFactory.cs
  type IClientFactory (line 23) | public interface IClientFactory
    method Create (line 25) | IClient Create(ClientOptions options);
    method Create (line 27) | IClient Create(

FILE: desktop/src/Plexus.Interop.Client.Core/IClientStreamingMethodCall.cs
  type IClientStreamingMethodCall (line 28) | public interface IClientStreamingMethodCall<in TRequest, TResponse> : IM...

FILE: desktop/src/Plexus.Interop.Client.Core/IDuplexStreamingMethodCall.cs
  type IDuplexStreamingMethodCall (line 27) | public interface IDuplexStreamingMethodCall<in TRequest, TResponse> : IM...

FILE: desktop/src/Plexus.Interop.Client.Core/IMethod.cs
  type IMethod (line 19) | public interface IMethod
  type IMethod (line 24) | public interface IMethod<TRequest, TResponse> : IMethod
  type IUnaryMethod (line 28) | public interface IUnaryMethod<TRequest, TResponse> : IMethod<TRequest, T...
  type IServerStreamingMethod (line 32) | public interface IServerStreamingMethod<TRequest, TResponse> : IMethod<T...
  type IClientStreamingMethod (line 36) | public interface IClientStreamingMethod<TRequest, TResponse> : IMethod<T...
  type IDuplexStreamingMethod (line 40) | public interface IDuplexStreamingMethod<TRequest, TResponse> : IMethod<T...

FILE: desktop/src/Plexus.Interop.Client.Core/IMethodCall.cs
  type IMethodCall (line 21) | public interface IMethodCall
    method Cancel (line 33) | void Cancel();
    method CancelAsync (line 41) | Task CancelAsync();

FILE: desktop/src/Plexus.Interop.Client.Core/IServerStreamingMethodCall.cs
  type IServerStreamingMethodCall (line 26) | public interface IServerStreamingMethodCall<TResponse> : IMethodCall

FILE: desktop/src/Plexus.Interop.Client.Core/IUnaryMethodCall.cs
  type IUnaryMethodCall (line 21) | public interface IUnaryMethodCall: IMethodCall

FILE: desktop/src/Plexus.Interop.Client.Core/IUnaryMethodCall~1.cs
  type IUnaryMethodCall (line 21) | public interface IUnaryMethodCall<TResponse> : IMethodCall

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/ClientStreamingMethodCall.cs
  class ClientStreamingMethodCall (line 25) | internal sealed class ClientStreamingMethodCall<TRequest, TResponse> :
    method ClientStreamingMethodCall (line 32) | public ClientStreamingMethodCall(Func<ValueTask<IOutcomingInvocation<T...
    method StartCoreAsync (line 44) | protected override async Task<Task> StartCoreAsync()
    method Cancel (line 60) | public void Cancel()
    method CancelAsync (line 65) | public Task CancelAsync()
    method ProcessResponseAsync (line 70) | private async Task<TResponse> ProcessResponseAsync(IInvocation<TReques...
    method ProcessRequestsAsync (line 92) | private async Task ProcessRequestsAsync(IInvocation<TRequest, TRespons...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/ClientStreamingMethodCallHandler.cs
  class ClientStreamingMethodCallHandler (line 23) | internal sealed class ClientStreamingMethodCallHandler<TRequest, TRespon...
    method ClientStreamingMethodCallHandler (line 27) | public ClientStreamingMethodCallHandler(
    method HandleCoreAsync (line 35) | protected override async Task HandleCoreAsync(IIncomingInvocation<TReq...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/DuplexStreamingMethodCall.cs
  class DuplexStreamingMethodCall (line 25) | internal sealed class DuplexStreamingMethodCall<TRequest, TResponse> :
    method DuplexStreamingMethodCall (line 32) | public DuplexStreamingMethodCall(Func<ValueTask<IOutcomingInvocation<T...
    method StartCoreAsync (line 44) | protected override async Task<Task> StartCoreAsync()
    method Cancel (line 60) | public void Cancel()
    method CancelAsync (line 65) | public Task CancelAsync()
    method ProcessResponsesAsync (line 70) | private async Task ProcessResponsesAsync(IInvocation<TRequest, TRespon...
    method ProcessRequestsAsync (line 92) | private async Task ProcessRequestsAsync(IInvocation<TRequest, TRespons...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/DuplexStreamingMethodCallHandler.cs
  class DuplexStreamingMethodCallHandler (line 22) | internal sealed class DuplexStreamingMethodCallHandler<TRequest, TRespon...
    method DuplexStreamingMethodCallHandler (line 26) | public DuplexStreamingMethodCallHandler(
    method HandleCoreAsync (line 34) | protected override async Task HandleCoreAsync(IIncomingInvocation<TReq...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/MethodCallHandlerBase.cs
  class MethodCallHandlerBase (line 26) | internal abstract class MethodCallHandlerBase<TRequest, TResponse> : IMe...
    method MethodCallHandlerBase (line 30) | protected MethodCallHandlerBase(IIncomingInvocationFactory incomingInv...
    method HandleAsync (line 35) | public async Task HandleAsync(IncomingInvocationDescriptor info, ITran...
    method HandleCoreAsync (line 66) | protected abstract Task HandleCoreAsync(

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/ServerStreamingMethodCall.cs
  class ServerStreamingMethodCall (line 25) | internal sealed class ServerStreamingMethodCall<TRequest, TResponse>
    method ServerStreamingMethodCall (line 31) | public ServerStreamingMethodCall(Func<ValueTask<IOutcomingInvocation<T...
    method Cancel (line 42) | public void Cancel()
    method CancelAsync (line 47) | public Task CancelAsync()
    method StartCoreAsync (line 52) | protected override async Task<Task> StartCoreAsync()
    method ProcessAsync (line 61) | private async Task ProcessAsync(IInvocation<TRequest, TResponse> invoc...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/ServerStreamingMethodCallHandler.cs
  class ServerStreamingMethodCallHandler (line 23) | internal sealed class ServerStreamingMethodCallHandler<TRequest, TRespon...
    method ServerStreamingMethodCallHandler (line 27) | public ServerStreamingMethodCallHandler(
    method HandleCoreAsync (line 35) | protected override async Task HandleCoreAsync(IIncomingInvocation<TReq...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/UnaryMethodCall.cs
  class UnaryMethodCall (line 25) | internal sealed class UnaryMethodCall<TRequest, TResponse>
    method UnaryMethodCall (line 31) | public UnaryMethodCall(Func<ValueTask<IOutcomingInvocation<TRequest, T...
    method Cancel (line 48) | public void Cancel()
    method CancelAsync (line 53) | public Task CancelAsync()
    method StartCoreAsync (line 58) | protected override async Task<Task> StartCoreAsync()
    method ProcessAsync (line 67) | private async Task ProcessAsync(IInvocation<TRequest, TResponse> invoc...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Calls/UnaryMethodCallHandler.cs
  class UnaryMethodCallHandler (line 23) | internal sealed class UnaryMethodCallHandler<TRequest, TResponse> : Meth...
    method UnaryMethodCallHandler (line 27) | public UnaryMethodCallHandler(
    method HandleCoreAsync (line 35) | protected override async Task HandleCoreAsync(IIncomingInvocation<TReq...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/Client.cs
  class Client (line 33) | internal sealed class Client : ProcessBase, IClient, IClientCallInvoker,...
    method Client (line 50) | public Client(ClientOptions options)
    method StartCoreAsync (line 66) | protected override async Task<Task> StartCoreAsync()
    method ConnectAsync (line 80) | public async Task ConnectAsync()
    method Disconnect (line 86) | public void Disconnect()
    method DisconnectAsync (line 92) | public Task DisconnectAsync()
    method Dispose (line 98) | public override void Dispose()
    method CheckConnectionState (line 104) | private void CheckConnectionState()
    method Call (line 114) | public IUnaryMethodCall Call<TRequest>(IUnaryMethod<TRequest, Nothing>...
    method CallUnary (line 120) | public IUnaryMethodCall CallUnary<TRequest>(MethodCallDescriptor descr...
    method Call (line 129) | public IUnaryMethodCall<TResponse> Call<TRequest, TResponse>(IUnaryMet...
    method CallUnary (line 135) | public IUnaryMethodCall<TResponse> CallUnary<TRequest, TResponse>(Meth...
    method Call (line 144) | public IServerStreamingMethodCall<TResponse> Call<TRequest, TResponse>...
    method CallServerStreaming (line 150) | public IServerStreamingMethodCall<TResponse> CallServerStreaming<TRequ...
    method Call (line 159) | public IClientStreamingMethodCall<TRequest, TResponse> Call<TRequest, ...
    method CallClientStreaming (line 165) | public IClientStreamingMethodCall<TRequest, TResponse> CallClientStrea...
    method Call (line 174) | public IDuplexStreamingMethodCall<TRequest, TResponse> Call<TRequest, ...
    method CallDuplexStreaming (line 180) | public IDuplexStreamingMethodCall<TRequest, TResponse> CallDuplexStrea...
    method DiscoverAsync (line 189) | public async Task<IReadOnlyCollection<DiscoveredMethod>> DiscoverAsync...
    method DiscoverAsync (line 194) | public async Task<IReadOnlyCollection<DiscoveredMethod<TRequest, TResp...
    method DiscoverAsync (line 200) | public async Task<IReadOnlyCollection<DiscoveredMethod<TRequest, Nothi...
    method DiscoverOnlineAsync (line 206) | public async Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest,...
    method DiscoverOnlineAsync (line 212) | public async Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest,...
    method DiscoverInCurrentContextAsync (line 218) | public async Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest,...
    method DiscoverInSpecificContextAsync (line 224) | public async Task<IReadOnlyCollection<DiscoveredOnlineMethod<TRequest,...
    method DiscoverAsync (line 230) | public async Task<IReadOnlyCollection<DiscoveredService>> DiscoverAsyn...
    method DiscoverOnlineAsync (line 235) | public async Task<IReadOnlyCollection<DiscoveredOnlineService>> Discov...
    method DiscoverInCurrentContextAsync (line 241) | public async Task<IReadOnlyCollection<DiscoveredOnlineService>> Discov...
    method DiscoverInSpecificContextAsync (line 247) | public async Task<IReadOnlyCollection<DiscoveredOnlineService>> Discov...
    method ProcessAsync (line 253) | private async Task ProcessAsync()
    method ListenIncomingInvocationsAsync (line 279) | private Task ListenIncomingInvocationsAsync(ITransportConnection conne...
    method HandleIncomingChannel (line 287) | private void HandleIncomingChannel(ITransportChannel channel)
    method OnTaskCompleted (line 294) | private void OnTaskCompleted(Task task, object state)
    method HandleIncomingChannelAsync (line 301) | private async Task HandleIncomingChannelAsync(object state)
    method HandleInvocationStartRequestAsync (line 331) | private Task HandleInvocationStartRequestAsync(IInvocationStartRequest...
    method ConvertQuery (line 356) | private MethodDiscoveryQuery ConvertQuery<TRequest, TResponse>(MethodD...
    method DiscoverInternalAsync (line 371) | private async Task<IReadOnlyCollection<DiscoveredMethod>> DiscoverInte...
    method DiscoverInternalAsync (line 383) | private async Task<IReadOnlyCollection<DiscoveredService>> DiscoverInt...
    method OnDiscoveryTaskCompleted (line 395) | private void OnDiscoveryTaskCompleted(Task task)

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/ClientConnection.cs
  class ClientConnection (line 24) | internal sealed class ClientConnection : IClientConnection
    method ClientConnection (line 28) | public ClientConnection(UniqueId id, ITransportConnection transportCon...
    method TryComplete (line 42) | public bool TryComplete()
    method TryTerminate (line 47) | public bool TryTerminate(Exception ex = null)
    method TryCreateChannelSafeAsync (line 52) | public ValueTask<Maybe<ITransportChannel>> TryCreateChannelSafeAsync()
    method Dispose (line 57) | public void Dispose()

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/ClientConnectionFactory.cs
  class ClientConnectionFactory (line 25) | internal sealed class ClientConnectionFactory
    method ConnectAsync (line 31) | public async Task<IClientConnection> ConnectAsync(ClientOptions option...

FILE: desktop/src/Plexus.Interop.Client.Core/Internal/ClientProtocol/Discovery/DiscoveryService.cs
  class DiscoveryService (line 29) | internal sealed class DiscoveryService : IDiscoveryService
    method DiscoveryService (line 35) | public DiscoveryService(
    method DiscoverAsync (line 45) | public async Task<IReadOnlyCollection<DiscoveredMethod>> DiscoverAsync...
    method DiscoverAsync (line 87) | public async Task<IReadOnlyCollection<DiscoveredService>> DiscoverAsyn...
    met
Condensed preview — 1633 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,832K chars).
[
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 3496,
    "preview": "# Contributing to Plexus Interop\nThanks for your interest in the project! Here is some basic information about how to co"
  },
  {
    "path": ".gitignore",
    "chars": 581,
    "preview": "### Gradle ###\nbuild\nnode_modules\n.gradle/\n\n### Maven ###\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n.idea\n*.iml\n**/src-gen"
  },
  {
    "path": ".whitesource",
    "chars": 188,
    "preview": "{\n  \"scanSettings\": {\n    \"configMode\": \"AUTO\"\n  },\n  \"checkRunSettings\": {\n    \"vulnerableCheckRunConclusionLevel\": \"fa"
  },
  {
    "path": "FILE_HEADER",
    "chars": 613,
    "preview": "Copyright 2017-2021 Plexus Interop Deutsche Bank AG\nSPDX-License-Identifier: Apache-2.0\n\nLicensed under the Apache Licen"
  },
  {
    "path": "LICENSE",
    "chars": 11366,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "NOTICE",
    "chars": 7781,
    "preview": "Copyright 2017-2019 Plexus Interop Deutsche Bank AG\nSPDX-License-Identifier: Apache-2.0\n\nThis product includes software "
  },
  {
    "path": "README.md",
    "chars": 11170,
    "preview": "[![FINOS - Archived](https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@master/images/badge-archived.svg)](https://commun"
  },
  {
    "path": "add-file-headers.bat",
    "chars": 53,
    "preview": "call gradlew.bat license --console plain --no-daemon\n"
  },
  {
    "path": "build.bat",
    "chars": 50,
    "preview": "call gradlew.bat build --console plain --no-daemon"
  },
  {
    "path": "build.gradle",
    "chars": 217,
    "preview": "buildscript {\n    repositories {        \n        mavenCentral()\n    }\n}\n\nallprojects {\n    repositories {        \n      "
  },
  {
    "path": "desktop/.gitignore",
    "chars": 5812,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "desktop/.nuget-local-packages/README.txt",
    "chars": 141,
    "preview": "This folder is added to nuget.config as additional nuget feed.\nPut packages here if you want to test them without publis"
  },
  {
    "path": "desktop/NuGet.Config",
    "chars": 699,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageRestore>\n    <!-- Allow NuGet to download missing pack"
  },
  {
    "path": "desktop/README.txt",
    "chars": 559,
    "preview": "Prerequisites for development:\n- Windows 7+\n- Visual Studio 2017 15.7+ with enabled \".NET Core development\" feature OR V"
  },
  {
    "path": "desktop/build.cmd",
    "chars": 364,
    "preview": "REM work around for https://github.com/dotnet/cli/issues/3995\nset tmp=\nset temp=\nif not defined PLEXUS_BUILD_DOTNET_PARA"
  },
  {
    "path": "desktop/build.gradle",
    "chars": 4202,
    "preview": "import org.apache.tools.ant.taskdefs.condition.Os\n\nplugins {\n    id \"com.github.hierynomus.license\" version\"0.14.0\"\n    "
  },
  {
    "path": "desktop/coverage-broker.cmd",
    "chars": 1231,
    "preview": "REM work around for https://github.com/dotnet/cli/issues/3995\nset tmp=\nset temp=\nCD %~dp0\nif defined APPVEYOR (\n\tSET LOG"
  },
  {
    "path": "desktop/coverage-client.cmd",
    "chars": 1294,
    "preview": "REM work around for https://github.com/dotnet/cli/issues/3995\nset tmp=\nset temp=\nCD %~dp0\nif defined APPVEYOR (\n\tSET LOG"
  },
  {
    "path": "desktop/coverage.cmd",
    "chars": 1191,
    "preview": "REM work around for https://github.com/dotnet/cli/issues/3995\nset tmp=\nset temp=\nCD %~dp0\nif defined APPVEYOR (\n\tSET LOG"
  },
  {
    "path": "desktop/dotnet.cmd",
    "chars": 50,
    "preview": "@ECHO OFF\n\"%PLEXUS_BUILD_DOTNET_DIR%dotnet.exe\" %*"
  },
  {
    "path": "desktop/global.json",
    "chars": 132,
    "preview": "{\n  \"projects\": [\n    \"src\"\n  ],\n  \"sdk\": {\n    \"version\": \"5.0.100\",\n    \"allowPrerelease\": false,\n    \"rollForward\": \""
  },
  {
    "path": "desktop/push.cmd",
    "chars": 339,
    "preview": "@ECHO OFF\nREM work around for https://github.com/dotnet/cli/issues/3995\nset tmp=\nset temp=\nCD %~dp0\nif not defined PLEXU"
  },
  {
    "path": "desktop/src/Common.csproj",
    "chars": 904,
    "preview": "<Project>\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    <Version>0.1.0</Version>\n    <Authors>Plexus Inter"
  },
  {
    "path": "desktop/src/Plexus.Channels/ChannelExtensions.cs",
    "chars": 8855,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Channels/Plexus.Channels.csproj",
    "chars": 793,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup>\n    <TargetFrameworks Cond"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/AppConnectionDescriptor.cs",
    "chars": 2168,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/BrokerFeatures.cs",
    "chars": 832,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Channels/ChannelWriteTimeoutException.cs",
    "chars": 948,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Channels/IChannel.cs",
    "chars": 830,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Channels/IReadableChannel.cs",
    "chars": 970,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Channels/ITerminatableWritableChannel.cs",
    "chars": 879,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Channels/IWritableChannel.cs",
    "chars": 967,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/EnvironmentHelper.cs",
    "chars": 4988,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Maybe.cs",
    "chars": 3341,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Nothing.cs",
    "chars": 1069,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Plexus.Common.Contracts.csproj",
    "chars": 640,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup>\n    <TargetFrameworks Con"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Pools/IPooledBuffer.cs",
    "chars": 838,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/Pools/IPooledObject.cs",
    "chars": 791,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/TransportType.cs",
    "chars": 761,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under "
  },
  {
    "path": "desktop/src/Plexus.Common.Contracts/UniqueId.cs",
    "chars": 5375,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Generate.cmd",
    "chars": 338,
    "preview": "set INTEROP_METADATA_PATH=..\\..\\..\\dsl\\interop-lang\\src\\main\\resources\nset INTEROP_MANIFEST_PATH=command_line_tool.inter"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/BrokerCliOptions.cs",
    "chars": 1544,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/BrokerProgram.cs",
    "chars": 1899,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/Generated/interop/AppConnectionDescriptor.msg.g.cs",
    "chars": 15489,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/Generated/interop/AppLaunchMode.msg.g.cs",
    "chars": 2499,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/Generated/interop/AppLifecycleService.msg.g.cs",
    "chars": 124895,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/Generated/interop/AppLifecycleService.svc.g.cs",
    "chars": 7488,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/Generated/interop/CommandLineTool.app.g.cs",
    "chars": 2897,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/Generated/interop/InvocationDescriptor.msg.g.cs",
    "chars": 15665,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/Generated/interop/Options.msg.g.cs",
    "chars": 3364,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/Generated/interop/UniqueId.msg.g.cs",
    "chars": 10017,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/IProgram.cs",
    "chars": 968,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/InstanceAwareness.cs",
    "chars": 803,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/InteropCliProgram.cs",
    "chars": 3235,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/LaunchCliOptions.cs",
    "chars": 1210,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/LockFile.cs",
    "chars": 2434,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/ProgramLoader.cs",
    "chars": 6626,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/StopCliOptions.cs",
    "chars": 845,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/StudioCliOptions.cs",
    "chars": 848,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Internal/VerbOptions.cs",
    "chars": 1683,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Plexus.Host.csproj",
    "chars": 3092,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup Condition=\" '$(CORE_ONLY)'"
  },
  {
    "path": "desktop/src/Plexus.Host/Plexus.Interop.Broker.Redist.nuspec",
    "chars": 770,
    "preview": "<?xml version=\"1.0\"?>\n<package >\n  <metadata>\n    <id>$id$</id>\n    <version>$version$</version>\n    <title>$id$</title>"
  },
  {
    "path": "desktop/src/Plexus.Host/Plexus.Interop.Broker.Redist.targets",
    "chars": 469,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild"
  },
  {
    "path": "desktop/src/Plexus.Host/Program.cs",
    "chars": 8091,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Host/Properties/launchSettings.json",
    "chars": 412,
    "preview": "{\n  \"profiles\": {\n    \"Samples Broker\": {\n      \"commandName\": \"Executable\",\n      \"executablePath\": \".\\\\plexus.cmd\",\n  "
  },
  {
    "path": "desktop/src/Plexus.Host/nlog.config",
    "chars": 2237,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<nlog xmlns=\"http://www.nlog-project.org/schemas/NLog.xsd\"\n      xmlns:xsi=\"htt"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Generate.cmd",
    "chars": 380,
    "preview": "set INTEROP_METADATA_PATH=..\\..\\..\\dsl\\interop-lang\\src\\main\\resources\nset INTEROP_MANIFEST_PATH={app_lifecycle_manager."
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/IAppLaunchedEventConsumer.cs",
    "chars": 885,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppConnection.cs",
    "chars": 2743,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppDto.cs",
    "chars": 1510,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppInfo.cs",
    "chars": 1394,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLaunchedEventProvider.cs",
    "chars": 1219,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLaunchedEventSubscriber.cs",
    "chars": 4434,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLifecycleManager.cs",
    "chars": 17765,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppLifecycleManagerClientClientRepository.cs",
    "chars": 4207,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppRegistry.cs",
    "chars": 962,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/AppsDto.cs",
    "chars": 1057,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppConnectionDescriptor.msg.g.cs",
    "chars": 15717,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLaunchMode.msg.g.cs",
    "chars": 2535,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLauncherService.msg.g.cs",
    "chars": 46506,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLauncherService.svc.g.cs",
    "chars": 4001,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleManager.app.g.cs",
    "chars": 36061,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleService.msg.g.cs",
    "chars": 126243,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppLifecycleService.svc.g.cs",
    "chars": 7816,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppMetadataService.msg.g.cs",
    "chars": 110956,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppMetadataService.svc.g.cs",
    "chars": 4408,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppRegistrationService.msg.g.cs",
    "chars": 22502,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/AppRegistrationService.svc.g.cs",
    "chars": 4222,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/ContextLinkage.msg.g.cs",
    "chars": 109667,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/ContextLinkage.svc.g.cs",
    "chars": 11994,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/InvocationDescriptor.msg.g.cs",
    "chars": 15805,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/NativeAppLauncher.app.g.cs",
    "chars": 6504,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/Options.msg.g.cs",
    "chars": 3400,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Generated/interop/UniqueId.msg.g.cs",
    "chars": 10069,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppLaunchedEventProvider.cs",
    "chars": 897,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppLifecycleManagerClientClientRepository.cs",
    "chars": 1011,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/IAppRegistryProvider.cs",
    "chars": 859,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/InteropContext.cs",
    "chars": 4887,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/InteropContextFactory.cs",
    "chars": 1123,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/JsonFileAppRegistryProvider.cs",
    "chars": 1271,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/NativeAppLauncherClient.cs",
    "chars": 3835,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/NativeAppLauncherParamsDto.cs",
    "chars": 982,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/ObservableExtensions.cs",
    "chars": 2980,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/ProtobufHelper.cs",
    "chars": 3265,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppLifecycleServiceImpl.cs",
    "chars": 12943,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppMetadataServiceImpl.cs",
    "chars": 6613,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/AppRegistrationServiceImpl.cs",
    "chars": 1896,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/AppConnectionsSet.cs",
    "chars": 5054,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/AppContextBindingEvent.cs",
    "chars": 1041,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/Context.cs",
    "chars": 5642,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkage/ContextsSet.cs",
    "chars": 4248,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/ContextLinkageServiceImpl.cs",
    "chars": 14070,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/IAppLifecycleService.cs",
    "chars": 897,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/Services/IAppMetadataService.cs",
    "chars": 870,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Internal/SubProcessLauncher.cs",
    "chars": 2771,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager/Plexus.Interop.Apps.Manager.csproj",
    "chars": 1174,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup>\n    <TargetFrameworks Cond"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/AppConnectionEvent.cs",
    "chars": 1030,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/ConnectionEventType.cs",
    "chars": 828,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppConnectedEventProvider.cs",
    "chars": 845,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppConnection.cs",
    "chars": 1099,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/IAppLifecycleManager.cs",
    "chars": 2168,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/IContextLinkageManager.cs",
    "chars": 1155,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/IInteropContext.cs",
    "chars": 1104,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/IInvocationEventProvider.cs",
    "chars": 910,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationDescriptor.cs",
    "chars": 1763,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationFinishedEventDescriptor.cs",
    "chars": 1441,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationResult.cs",
    "chars": 792,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/InvocationStartedEventDescriptor.cs",
    "chars": 1143,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/Plexus.Interop.Apps.Manager.Contracts.csproj",
    "chars": 1058,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\" ToolsVersion=\"15.0\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup>\n    <T"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/ResolveMode.cs",
    "chars": 781,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Apps.Manager.Contracts/ResolvedConnection.cs",
    "chars": 1032,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker/BrokerFactory.cs",
    "chars": 1029,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker/BrokerIsAlreadyRunningException.cs",
    "chars": 979,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker/BrokerOptions.cs",
    "chars": 1282,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker/IBroker.cs",
    "chars": 848,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker/Internal/Broker.cs",
    "chars": 8045,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker/Internal/ServerConnectionListener.cs",
    "chars": 3626,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker/Plexus.Interop.Broker.csproj",
    "chars": 1728,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup>\n    <TargetFrameworks Con"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/BrokerException.cs",
    "chars": 908,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/BrokerProcessorFactory.cs",
    "chars": 1474,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Generate.cmd",
    "chars": 84,
    "preview": "plexus gen-json-meta -b ..\\..\\..\\dsl\\interop-lang\\src\\main\\resources -o Internal -v\n"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/IBrokerProcessor.cs",
    "chars": 843,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/AppConnectionProcessor.cs",
    "chars": 4202,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/AuthenticationHandler.cs",
    "chars": 4822,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/BrokerProcessor.cs",
    "chars": 7040,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/BrokerRegistryProvider.cs",
    "chars": 1935,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/ClientRequestHandler.cs",
    "chars": 4341,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/DiscoveryRequestHandler.cs",
    "chars": 13736,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/IAppConnectionProcessor.cs",
    "chars": 909,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/IAuthenticationHandler.cs",
    "chars": 925,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/IClientRequestHandler.cs",
    "chars": 952,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/IDiscoveryRequestHandler.cs",
    "chars": 1243,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/IInvocationRequestHandler.cs",
    "chars": 1033,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/IRegistryService.cs",
    "chars": 2056,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/InvocationRequestHandler.cs",
    "chars": 23228,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/RegistryService.cs",
    "chars": 12155,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Internal/interop.json",
    "chars": 71971,
    "preview": "{\n\t\"messages\": {\n\t  \"nested\": {\n\t    \"google\": {\n\t      \"nested\": {\n\t        \"protobuf\": {\n\t          \"options\": {\n\t    "
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Plexus.Interop.Broker.Core.csproj",
    "chars": 1523,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup>\n    <TargetFrameworks Cond"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core/Properties/AsseblyInfo.cs",
    "chars": 766,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core.Tests/Plexus.Interop.Broker.Core.Tests.csproj",
    "chars": 1495,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup>\n    <TargetFrameworks Con"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core.Tests/RegistryServiceTests.cs",
    "chars": 1616,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Broker.Core.Tests/RegistryServiceTests.interop.json",
    "chars": 1926,
    "preview": "{\n  \"services\": [\n    {\n      \"id\": \"interop.AppLauncherService\",\n      \"methods\": [\n        {\n          \"name\": \"Launc"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client/ClientBase.cs",
    "chars": 1754,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client/ClientOptionsBuilderExtensions.cs",
    "chars": 1706,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client/Plexus.Interop.Client.csproj",
    "chars": 1160,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <Import Project=\"../Common.csproj\" />\n\n  <PropertyGroup>\n    <TargetFrameworks Cond"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/ClientDiscoveryInvokerExtensions.cs",
    "chars": 9438,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/ClientFactory.cs",
    "chars": 1736,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/ClientOptions.cs",
    "chars": 2524,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/ClientOptionsBuilder.cs",
    "chars": 5863,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/ContextLinkageOptions.cs",
    "chars": 2566,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/DiscoveredMethod.cs",
    "chars": 6763,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/DiscoveredService.cs",
    "chars": 2795,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IClient.cs",
    "chars": 1166,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IClientCallInvoker.cs",
    "chars": 4315,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IClientDiscoveryInvoker.cs",
    "chars": 2393,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IClientFactory.cs",
    "chars": 1136,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IClientStreamingMethodCall.cs",
    "chars": 1424,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IDuplexStreamingMethodCall.cs",
    "chars": 1426,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IMethod.cs",
    "chars": 1283,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IMethodCall.cs",
    "chars": 1827,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IServerStreamingMethodCall.cs",
    "chars": 1155,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IUnaryMethodCall.cs",
    "chars": 907,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/IUnaryMethodCall~1.cs",
    "chars": 934,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/ClientStreamingMethodCall.cs",
    "chars": 4533,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/ClientStreamingMethodCallHandler.cs",
    "chars": 1658,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/DuplexStreamingMethodCall.cs",
    "chars": 4652,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/DuplexStreamingMethodCallHandler.cs",
    "chars": 1555,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/MethodCallHandlerBase.cs",
    "chars": 2724,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/ServerStreamingMethodCall.cs",
    "chars": 3183,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/ServerStreamingMethodCallHandler.cs",
    "chars": 1702,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/UnaryMethodCall.cs",
    "chars": 3126,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Calls/UnaryMethodCallHandler.cs",
    "chars": 1737,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/Client.cs",
    "chars": 20242,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/ClientConnection.cs",
    "chars": 1949,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/ClientConnectionFactory.cs",
    "chars": 3930,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/ClientProtocol/Discovery/DiscoveryService.cs",
    "chars": 9440,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/ClientProtocol/Discovery/IDiscoveryService.cs",
    "chars": 1868,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/ClientProtocol/Invocations/IIncomingInvocation.cs",
    "chars": 888,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/ClientProtocol/Invocations/IIncomingInvocationFactory.cs",
    "chars": 970,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  },
  {
    "path": "desktop/src/Plexus.Interop.Client.Core/Internal/ClientProtocol/Invocations/IInvocation.cs",
    "chars": 1098,
    "preview": "/**\n * Copyright 2017-2021 Plexus Interop Deutsche Bank AG\n * SPDX-License-Identifier: Apache-2.0\n *\n * Licensed under t"
  }
]

// ... and 1433 more files (download for full content)

About this extraction

This page contains the full source code of the symphonyoss/plexus-interop GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1633 files (6.1 MB), approximately 1.7M tokens, and a symbol index with 7123 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!