Source:
<code>public Object decode(Object object) { if (object instanceof JSONArray) { return convertJSONArrayToList((JSONArray) object); } if (!(object instanceof JSONObject)) { return object; } JSONObject jsonObject = (JSONObject) object; String opString = jsonObject.optString("__op", null); if (opString != null) { try { return ParseFieldOperations.decode(jsonObject, this); } catch (JSONException e) { throw new RuntimeException(e); } } String typeString = jsonObject.optString("__type", null); if (typeString == null) { return convertJSONObjectToMap(jsonObject); } if (typeString.equals("Date")) { String iso = jsonObject.optString("iso"); return ParseDateFormat.getInstance().parse(iso); } if (typeString.equals("Bytes")) { String base64 = jsonObject.optString("base64"); return Base64.decode(base64, Base64.NO_WRAP); } if (typeString.equals("Pointer")) { return decodePointer(jsonObject.optString("className"), jsonObject.optString("objectId")); } if (typeString.equals("File")) { return new ParseFile(jsonObject, this); } if (typeString.equals("GeoPoint")) { double latitude, longitude; try { latitude = jsonObject.getDouble("latitude"); longitude = jsonObject.getDouble("longitude"); } catch (JSONException e) { throw new RuntimeException(e); } return new ParseGeoPoint(latitude, longitude); } if (typeString.equals("Object")) { <START> return ParseObject.fromJSON(jsonObject, null, !jsonObject.has(ParseObject.KEY_SELECTED_KEYS), this); <END> } if (typeString.equals("Relation")) { return new ParseRelation<>(jsonObject, this); } if (typeString.equals("OfflineObject")) { throw new RuntimeException("An unexpected offline pointer was encountered."); } return null; }</code><technical_language>fromJSON() figure out complete instead of right? get KEY_SELECTED_KEYS out of a public static variable.</technical_language>

Target:
public Object decode(Object object) { if (object instanceof JSONArray) { return convertJSONArrayToList((JSONArray) object); } if (!(object instanceof JSONObject)) { return object; } JSONObject jsonObject = (JSONObject) object; String opString = jsonObject.optString("__op", null); if (opString != null) { try { return ParseFieldOperations.decode(jsonObject, this); } catch (JSONException e) { throw new RuntimeException(e); } } String typeString = jsonObject.optString("__type", null); if (typeString == null) { return convertJSONObjectToMap(jsonObject); } if (typeString.equals("Date")) { String iso = jsonObject.optString("iso"); return ParseDateFormat.getInstance().parse(iso); } if (typeString.equals("Bytes")) { String base64 = jsonObject.optString("base64"); return Base64.decode(base64, Base64.NO_WRAP); } if (typeString.equals("Pointer")) { return decodePointer(jsonObject.optString("className"), jsonObject.optString("objectId")); } if (typeString.equals("File")) { return new ParseFile(jsonObject, this); } if (typeString.equals("GeoPoint")) { double latitude, longitude; try { latitude = jsonObject.getDouble("latitude"); longitude = jsonObject.getDouble("longitude"); } catch (JSONException e) { throw new RuntimeException(e); } return new ParseGeoPoint(latitude, longitude); } if (typeString.equals("Object")) { return ParseObject.fromJSON(jsonObject, null, this); } if (typeString.equals("Relation")) { return new ParseRelation<>(jsonObject, this); } if (typeString.equals("OfflineObject")) { throw new RuntimeException("An unexpected offline pointer was encountered."); } return null; }