// JAVADOC COMMENT ELIDED
  private static LocationImpl locationInfo2Location(LocationInfo locationInfo) {
    QualifiedCoordinates coordinates =
        new QualifiedCoordinates(
            locationInfo.latitude,
            locationInfo.longitude,
            locationInfo.altitude,
            locationInfo.horizontalAccuracy,
            locationInfo.verticalAccuracy);

    AddressInfo address = new AddressInfo();

    if (locationInfo.isAddressInfo) {
      if (locationInfo.AddressInfo_EXTENSION != null) {
        address.setField(AddressInfo.EXTENSION, locationInfo.AddressInfo_EXTENSION);
      }
      if (locationInfo.AddressInfo_STREET != null) {
        address.setField(AddressInfo.STREET, locationInfo.AddressInfo_STREET);
      }
      if (locationInfo.AddressInfo_POSTAL_CODE != null) {
        address.setField(AddressInfo.POSTAL_CODE, locationInfo.AddressInfo_POSTAL_CODE);
      }
      if (locationInfo.AddressInfo_CITY != null) {
        address.setField(AddressInfo.CITY, locationInfo.AddressInfo_CITY);
      }
      if (locationInfo.AddressInfo_COUNTY != null) {
        address.setField(AddressInfo.COUNTY, locationInfo.AddressInfo_COUNTY);
      }
      if (locationInfo.AddressInfo_STATE != null) {
        address.setField(AddressInfo.STATE, locationInfo.AddressInfo_STATE);
      }
      if (locationInfo.AddressInfo_COUNTRY != null) {
        address.setField(AddressInfo.COUNTRY, locationInfo.AddressInfo_COUNTRY);
      }
      if (locationInfo.AddressInfo_COUNTRY_CODE != null) {
        address.setField(AddressInfo.COUNTRY_CODE, locationInfo.AddressInfo_COUNTRY_CODE);
      }
      if (locationInfo.AddressInfo_DISTRICT != null) {
        address.setField(AddressInfo.DISTRICT, locationInfo.AddressInfo_DISTRICT);
      }
      if (locationInfo.AddressInfo_BUILDING_NAME != null) {
        address.setField(AddressInfo.BUILDING_NAME, locationInfo.AddressInfo_BUILDING_NAME);
      }
      if (locationInfo.AddressInfo_BUILDING_FLOOR != null) {
        address.setField(AddressInfo.BUILDING_FLOOR, locationInfo.AddressInfo_BUILDING_FLOOR);
      }
      if (locationInfo.AddressInfo_BUILDING_ROOM != null) {
        address.setField(AddressInfo.BUILDING_ROOM, locationInfo.AddressInfo_BUILDING_ROOM);
      }
      if (locationInfo.AddressInfo_BUILDING_ZONE != null) {
        address.setField(AddressInfo.BUILDING_ZONE, locationInfo.AddressInfo_BUILDING_ZONE);
      }
      if (locationInfo.AddressInfo_CROSSING1 != null) {
        address.setField(AddressInfo.CROSSING1, locationInfo.AddressInfo_CROSSING1);
      }
      if (locationInfo.AddressInfo_CROSSING2 != null) {
        address.setField(AddressInfo.CROSSING2, locationInfo.AddressInfo_CROSSING2);
      }
      if (locationInfo.AddressInfo_URL != null) {
        address.setField(AddressInfo.URL, locationInfo.AddressInfo_URL);
      }
      if (locationInfo.AddressInfo_PHONE_NUMBER != null) {
        address.setField(AddressInfo.PHONE_NUMBER, locationInfo.AddressInfo_PHONE_NUMBER);
      }
    }
    LocationImpl location =
        new LocationImpl(
            coordinates,
            locationInfo.speed,
            locationInfo.course,
            locationInfo.method,
            address,
            locationInfo.isValid);
    location.extraInfoNMEA = locationInfo.extraInfoNMEA;
    location.extraInfoLIF = locationInfo.extraInfoLIF;
    location.extraInfoPlain = locationInfo.extraInfoPlain;
    location.extraInfoOther = locationInfo.extraInfoOther;
    location.extraInfoOtherMIMEType = locationInfo.extraInfoOtherMIMEType;
    location.setTimestamp(locationInfo.timestamp);
    return location;
  }