public ICollection <K> KeySet(IPredicate <K, V> predicate)
        {
            var data       = ToData(predicate);
            var request    = TransactionalMapKeySetWithPredicateCodec.EncodeRequest(GetName(), GetTransactionId(), GetThreadId(), data);
            var dataKeySet = Invoke(request, m => TransactionalMapKeySetWithPredicateCodec.DecodeResponse(m).set);

            return(ToSet <K>(dataKeySet));
        }
        public async Task <IReadOnlyList <TKey> > GetKeysAsync(IPredicate predicate)
        {
            var predicateData   = ToSafeData(predicate);
            var requestMessage  = TransactionalMapKeySetWithPredicateCodec.EncodeRequest(Name, TransactionId, ContextId, predicateData);
            var responseMessage = await Cluster.Messaging.SendToMemberAsync(requestMessage, TransactionClientConnection).CAF();

            var response = TransactionalMapKeySetWithPredicateCodec.DecodeResponse(responseMessage).Response;

            return(new ReadOnlyLazyList <TKey>(response, SerializationService));
        }