// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/model/AutocompleteResultType.java
// public enum AutocompleteResultType {
//     /**
//      * Any location
//      */
//     GEOCODE("geocode"),
//     /**
//      * Any location represented by a full postal address
//      */
//     ADDRESS("address"),
//     /**
//      * Any location represented by a full postal address that is a business establishment
//      */
// 
//     CITY("(cities)"),
// 
//     ESTABLISHMENT("establishment"),
//     /**
//      * Any location or establishment
//      */
//     NO_TYPE("no_type");
// 
// 
//     private final String queryParam;
// 
//     AutocompleteResultType(final String queryParam) {
//         this.queryParam = queryParam;
//     }
// 
//     public String getQueryParam() {
//         return queryParam;
//     }
// 
//     public static AutocompleteResultType fromEnum(int enumerated) {
//         return AutocompleteResultType.values()[enumerated];
//     }
// }
// 
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/model/PlacesAutocompleteResponse.java
// public final class PlacesAutocompleteResponse extends PlacesApiResponse {
// 
//     /**
//      * A list of predicted places from the api based on the given input
//      */
//     public final List<Place> predictions;
// 
//     public PlacesAutocompleteResponse(final Status status, final String error_message, final List<Place> predictions) {
//         super(status, error_message);
//         this.predictions = predictions;
//     }
// }
// 
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/model/PlacesDetailsResponse.java
// public final class PlacesDetailsResponse extends PlacesApiResponse {
// 
//     public final PlaceDetails result;
// 
//     public PlacesDetailsResponse(final Status status, final String error_message, final PlaceDetails result) {
//         super(status, error_message);
//         this.result = result;
//     }
// }
// 
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/network/PlacesHttpClient.java
// public interface PlacesHttpClient {
//     PlacesAutocompleteResponse executeAutocompleteRequest(Uri uri) throws IOException;
// 
//     PlacesDetailsResponse executeDetailsRequest(Uri uri) throws IOException;
// }
// 
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/util/LocationUtils.java
// public final class LocationUtils {
// 
//     public static String toLatLngString(@NonNull Location location) {
//         return location.getLatitude() + "," + location.getLongitude();
//     }
// 
//     private LocationUtils() {
//     }
// }


import android.location.Location;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.seatgeek.placesautocomplete.model.AutocompleteResultType;
import com.seatgeek.placesautocomplete.model.PlacesAutocompleteResponse;
import com.seatgeek.placesautocomplete.model.PlacesDetailsResponse;
import com.seatgeek.placesautocomplete.network.PlacesHttpClient;
import com.seatgeek.placesautocomplete.util.LocationUtils;
import java.io.IOException;
            uriBuilder.appendQueryParameter(PARAMETER_LOCATION, LocationUtils.toLatLngString(currentLocation));
        }

        if (locationBiasEnabled && radiusM != null) {
            uriBuilder.appendQueryParameter(PARAMETER_RADIUS, radiusM.toString());
        }

        if (!locationBiasEnabled) {
            uriBuilder.appendQueryParameter(PARAMETER_LOCATION, LocationUtils.toLatLngString(NO_BIAS_LOCATION));
            uriBuilder.appendQueryParameter(PARAMETER_RADIUS, NO_BIAS_RADIUS.toString());
        }

        if (languageCode != null) {
            uriBuilder.appendQueryParameter(PARAMETER_LANGUAGE, languageCode);
        }

        if (countryCode != null) {
            uriBuilder.appendQueryParameter(PARAMETER_COMPONENT, "country:"+countryCode.toUpperCase());
        }

        return httpClient.executeAutocompleteRequest(uriBuilder.build());
    }

    /**
     * Fetches the PlaceDetails for the given place_id. This is a
     * synchronous call, you must provide your own Async if you need it
     * @param placeId the Google Maps Places API Place ID for the place you desire details of
     * @return the details for the place id
     * @throws IOException
     */
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/model/AutocompleteResultType.java
// public enum AutocompleteResultType {
//     /**
//      * Any location
//      */
//     GEOCODE("geocode"),
//     /**
//      * Any location represented by a full postal address
//      */
//     ADDRESS("address"),
//     /**
//      * Any location represented by a full postal address that is a business establishment
//      */
// 
//     CITY("(cities)"),
// 
//     ESTABLISHMENT("establishment"),
//     /**
//      * Any location or establishment
//      */
//     NO_TYPE("no_type");
// 
// 
//     private final String queryParam;
// 
//     AutocompleteResultType(final String queryParam) {
//         this.queryParam = queryParam;
//     }
// 
//     public String getQueryParam() {
//         return queryParam;
//     }
// 
//     public static AutocompleteResultType fromEnum(int enumerated) {
//         return AutocompleteResultType.values()[enumerated];
//     }
// }
// 
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/model/PlacesAutocompleteResponse.java
// public final class PlacesAutocompleteResponse extends PlacesApiResponse {
// 
//     /**
//      * A list of predicted places from the api based on the given input
//      */
//     public final List<Place> predictions;
// 
//     public PlacesAutocompleteResponse(final Status status, final String error_message, final List<Place> predictions) {
//         super(status, error_message);
//         this.predictions = predictions;
//     }
// }
// 
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/model/PlacesDetailsResponse.java
// public final class PlacesDetailsResponse extends PlacesApiResponse {
// 
//     public final PlaceDetails result;
// 
//     public PlacesDetailsResponse(final Status status, final String error_message, final PlaceDetails result) {
//         super(status, error_message);
//         this.result = result;
//     }
// }
// 
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/network/PlacesHttpClient.java
// public interface PlacesHttpClient {
//     PlacesAutocompleteResponse executeAutocompleteRequest(Uri uri) throws IOException;
// 
//     PlacesDetailsResponse executeDetailsRequest(Uri uri) throws IOException;
// }
// 
// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/util/LocationUtils.java
// public final class LocationUtils {
// 
//     public static String toLatLngString(@NonNull Location location) {
//         return location.getLatitude() + "," + location.getLongitude();
//     }
// 
//     private LocationUtils() {
//     }
// }


// Path: placesautocomplete/src/main/java/com/seatgeek/placesautocomplete/PlacesApi.java
import android.location.Location;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.seatgeek.placesautocomplete.model.AutocompleteResultType;
import com.seatgeek.placesautocomplete.model.PlacesAutocompleteResponse;
import com.seatgeek.placesautocomplete.model.PlacesDetailsResponse;
import com.seatgeek.placesautocomplete.network.PlacesHttpClient;
import com.seatgeek.placesautocomplete.util.LocationUtils;
import java.io.IOException;

            uriBuilder.appendQueryParameter(PARAMETER_LOCATION, LocationUtils.toLatLngString(currentLocation));
        }

        if (locationBiasEnabled && radiusM != null) {
            uriBuilder.appendQueryParameter(PARAMETER_RADIUS, radiusM.toString());
        }

        if (!locationBiasEnabled) {
            uriBuilder.appendQueryParameter(PARAMETER_LOCATION, LocationUtils.toLatLngString(NO_BIAS_LOCATION));
            uriBuilder.appendQueryParameter(PARAMETER_RADIUS, NO_BIAS_RADIUS.toString());
        }

        if (languageCode != null) {
            uriBuilder.appendQueryParameter(PARAMETER_LANGUAGE, languageCode);
        }

        if (countryCode != null) {
            uriBuilder.appendQueryParameter(PARAMETER_COMPONENT, "country:"+countryCode.toUpperCase());
        }

        return httpClient.executeAutocompleteRequest(uriBuilder.build());
    }

    /**
     * Fetches the PlaceDetails for the given place_id. This is a
     * synchronous call, you must provide your own Async if you need it
     * @param placeId the Google Maps Places API Place ID for the place you desire details of
     * @return the details for the place id
     * @throws IOException
     */
    public PlacesDetailsResponse details(final String placeId) throws IOException {