@@ -0,0 +1,1558 @@
+package com.google.android.gnd.persistence.geojson;%0A%0Aimport com.google.android.gms.maps.model.LatLng;%0Aimport com.google.common.collect.ImmutableList;%0Aimport java8.util.Optional;%0Aimport org.json.JSONObject;%0A%0Apublic class GeoJsonFeature %7B%0A%0A  private static final String PROPERTIES_KEY = %22properties%22;%0A  private static final String LETTER_KEY = %22letter%22;%0A  private static final String COLOR_KEY = %22color%22;%0A  private static final String RANK_KEY = %22rank%22;%0A  private static final String ASCII_KEY = %22ascii%22;%0A%0A  // Geometry type%0A  private static final String POLYGON = %22Polygon%22;%0A%0A  private final JSONObject json;%0A  private final GeoJsonGeometry geometry;%0A  private final GeoJsonPolygon geoJsonPolygon;%0A%0A  public GeoJsonFeature(JSONObject json) %7B%0A    this.json = json;%0A    geometry = new GeoJsonGeometry(json);%0A    geoJsonPolygon = new GeoJsonPolygon(geometry);%0A  %7D%0A%0A  public ImmutableList%3CImmutableList%3CLatLng%3E%3E getVertices() %7B%0A    return geoJsonPolygon.getAllVertices();%0A  %7D%0A%0A  public boolean isPolygon() %7B%0A    return geometry.getType().map(s -%3E s.equals(POLYGON)).orElse(false);%0A  %7D%0A%0A  private Optional%3CString%3E getProperty(String key) %7B%0A    return Optional.ofNullable(json.optJSONObject(PROPERTIES_KEY)).map(j -%3E j.optString(key));%0A  %7D%0A%0A  public Optional%3CString%3E getLetter() %7B%0A    return getProperty(LETTER_KEY);%0A  %7D%0A%0A  public String getColor() %7B%0A    return getProperty(COLOR_KEY).orElse(%22000000%22);%0A  %7D%0A%0A  public Optional%3CString%3E getRank() %7B%0A    return getProperty(RANK_KEY);%0A  %7D%0A%0A  public Optional%3CString%3E getAscii() %7B%0A    return getProperty(ASCII_KEY);%0A  %7D%0A%7D%0A

Add GeoJsonFeature class