class ParseACL implements Parcelable {

  static ParseACL createACLFromJSONObject(JSONObject object, ParseDecoder decoder) {
    ParseACL acl = new ParseACL();

    for (String key : ParseJSONUtils.keys(object)) {
      if (key.equals(UNRESOLVED_USER_JSON_KEY)) {
        JSONObject unresolvedUser;
        try {
          unresolvedUser = object.getJSONObject(key);
        } catch (JSONException e) {
          throw new RuntimeException(e);
        }
        acl.unresolvedUser = (ParseUser) decoder.decode(unresolvedUser);
      } else {
        try {
          Permissions permissions = Permissions.createPermissionsFromJSONObject(object.getJSONObject(key));
          acl.permissionsById.put(key, permissions);
        } catch (JSONException e) {
          throw new RuntimeException("could not decode ACL: " + e.getMessage());
        }
      }
    }
    return acl;
  }

  public  ParseACL();
  public  ParseACL(ParseACL acl);
  public  ParseACL(ParseUser owner);
    ParseACL(Parcel source, ParseParcelDecoder decoder);

}