code: public static JSONObject fromJSON(String json) {
      int index1 = json.lastIndexOf("\"_i\":\"");
      if (index1 < 0)
        throw new JsonParseException("Unable to find _i key.");
      index1 += 6;
      int index2 = json.indexOf("\"", index1 + 1);
      if (index2 < 0)
        throw new JsonParseException("Unable to find end of _i value.");
      String id = json.substring(index1, index2);
      Class<? extends JSONObject> clazz = registrations.get(id);
      if (clazz == null){
        // See if the id is a full classname
        try{
          clazz = (Class<? extends JSONObject>) Class.forName(id);
          registrations.put(id, clazz);
        }catch(ClassNotFoundException ex){
          throw new JsonParseException("No registration for JSONObject message.identifier:" + id);
        }
      }
      return fromJSON(json, clazz);
    }
docs: Parses the given JSON and looks for the "_i" key, which is then looked up
  against calls to {@link #register(JSONObject)}, and then returns the result
  of {@link #fromJSON(String, Class)}