@SuppressWarnings("unchecked")
  private <T extends BaseAddress> T buildAddress() {
    switch (addressType) {
      case Group:
        GroupAddress groupAddr = new GroupAddress();
        groupAddr.setAddressId(addressId);
        groupAddr.setName(name);
        return (T) groupAddr;

      case Party:
        PartyAddress partyAddr = new PartyAddress();
        partyAddr.setAddressId(addressId);
        partyAddr.setName(name);
        return (T) partyAddr;

      case Physical:
        PhysicalAddress physicalAddr = new PhysicalAddress();
        physicalAddr.setAddressId(addressId);
        physicalAddr.setAddress(address);
        physicalAddr.setServiceId(serviceId);
        return (T) physicalAddr;

      default:
        return null;
    }
  }