public static ClarifaiInput deserialize(InputOuterClass.Input input) { final DataOuterClass.Data data = input.getData(); final List<Concept> concepts = new ArrayList<>(); for (ConceptOuterClass.Concept concept: data.getConceptsList()) { concepts.add(Concept.deserialize(concept)); } JsonObject metadata = MetadataConverter.structToJsonObject(data.getMetadata()); PointF geoPoint = null; if (data.hasGeo()) { GeoOuterClass.GeoPoint gp = data.getGeo().getGeoPoint(); geoPoint = PointF.at(gp.getLatitude(), gp.getLongitude()); } final List<Region> regions = new ArrayList<>(); for (DataOuterClass.Region region : data.getRegionsList()) { regions.add(Region.deserialize(region)); } return new AutoValue_ClarifaiInput( input.getId(), DateTimeConverter.timestampToDate(input.getCreatedAt()), data.hasVideo() ? ClarifaiVideo.deserialize(data.getVideo()) : ClarifaiImage.deserialize(data.getImage()), metadata, concepts, geoPoint, regions ); }