static string FixSuburbCase(AecModels.Address deputyOfficerAddress, string postcode)
    {
        var suburbs = AustraliaData.PostCodes.Single(x => x.Key == postcode).Value;
        var suburb  = deputyOfficerAddress.Suburb.Trim();
        var place   = suburbs.SingleOrDefault(x => string.Equals(x.Name, suburb, StringComparison.OrdinalIgnoreCase));

        if (place == null)
        {
            return(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(suburb));
        }
        return(place.Name !);
    }
    static Address?ToAddress(AecModels.Address address)
    {
        if (address.Line1 == null &&
            address.Line2 == null &&
            address.Line3 == null &&
            address.State == null &&
            address.Postcode == null &&
            address.Suburb == null)
        {
            return(null);
        }
        var line1 = address.Line1;

        if (string.IsNullOrWhiteSpace(line1))
        {
            throw new();
        }

        // ReSharper disable once SuggestVarOrType_BuiltInTypes
        string?line2 = address.Line2;

        if (string.IsNullOrWhiteSpace(line2))
        {
            line2 = null;
        }

        // ReSharper disable once SuggestVarOrType_BuiltInTypes
        string?line3 = address.Line3;

        if (string.IsNullOrWhiteSpace(line3))
        {
            line3 = null;
        }

        return(new()
        {
            State = (State)Enum.Parse(typeof(State), address.State !),
            Line1 = line1,
            Line2 = line2,
            Line3 = line3,
            Postcode = Convert.ToInt32(address.Postcode),
            Suburb = FixSuburbCase(address, address.Postcode !),
        });
    }