/// <summary>
        /// Gets the state for the given addresses.
        /// </summary>
        /// <returns>The state async.</returns>
        /// <param name="addresses">Addresses.</param>
        public async Task <Dictionary <string, ByteString> > GetStateAsync(string[] addresses)
        {
            var request = new TpStateGetRequest {
                ContextId = ContextId
            };

            request.Addresses.AddRange(addresses);

            var response = await Stream.SendAsync(request.Wrap(MessageType.TpStateGetRequest), CancellationToken.None);

            return(response.Unwrap <TpStateGetResponse>()
                   .Entries.ToDictionary(x => x.Address, x => x.Data));
        }