public async Task <CrabEditClientResult <CrabSubaddressId> > AddSubaddressToCrab(
            AddAddressRequest request,
            CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var addCrabSubaddressResponse = await _client.Add(
                new AddSubaddress
            {
                StreetNameId       = request.StreetNameId.AsIdentifier().Map(IdentifierMappings.StreetNameId),
                HouseNumber        = request.HouseNumber,
                BoxNumber          = request.BoxNumber,
                PostalCode         = request.PostalCode.AsIdentifier().Map(IdentifierMappings.PostalCode),
                Status             = request.Status.AsIdentifier().Map(IdentifierMappings.AddressStatus),
                OfficiallyAssigned = request.OfficiallyAssigned,
                Position           = MapPosition(request.Position)
            },
                cancellationToken);

            return(CrabEditClientResult <CrabSubaddressId>
                   .From(
                       addCrabSubaddressResponse,
                       identifier => new CrabSubaddressId(addCrabSubaddressResponse.AddressId)));
        }
        public async Task <CrabEditClientResult> CorrectSubaddress(
            int subaddressId,
            CorrectAddressRequest request,
            CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var updateResponse = await _client.Update(
                new EditSubaddress
            {
                SubaddressId       = subaddressId,
                OfficiallyAssigned = request.OfficiallyAssigned,
                Position           = MapPosition(request.Position),
                PostalCode         = request.PostalCode.AsIdentifier().Map(IdentifierMappings.PostalCode),
                Status             = request.Status.AsIdentifier().Map(IdentifierMappings.AddressStatus),
                IsCorrection       = true,
            },
                cancellationToken);

            return(CrabEditClientResult.From(updateResponse));
        }