private <T extends ReviewRequestBase> T fillReviewRequestBase(
      T reviewRequest, JSONObject jsonReviewRequest) throws JSONException {

    reviewRequest.setId(jsonReviewRequest.getInt("id"));
    reviewRequest.setSummary(jsonReviewRequest.getString("summary"));
    reviewRequest.setTestingDone(jsonReviewRequest.getString("testing_done"));
    reviewRequest.setDescription(jsonReviewRequest.getString("description"));
    reviewRequest.setPublic(jsonReviewRequest.getBoolean("public"));
    reviewRequest.setBranch(jsonReviewRequest.getString("branch"));

    // bugs
    reviewRequest.setBugsClosed(readStringArray(jsonReviewRequest, "bugs_closed"));

    // target people
    JSONArray jsonTargetPeople = jsonReviewRequest.getJSONArray("target_people");
    List<String> targetPeople = new ArrayList<String>();
    for (int j = 0; j < jsonTargetPeople.length(); j++)
      targetPeople.add(jsonTargetPeople.getJSONObject(j).getString("title"));
    reviewRequest.setTargetPeople(targetPeople);

    // target groups
    JSONArray jsonTargetGroups = jsonReviewRequest.getJSONArray("target_groups");
    List<String> targetGroups = new ArrayList<String>();
    for (int j = 0; j < jsonTargetGroups.length(); j++)
      targetGroups.add(jsonTargetGroups.getJSONObject(j).getString("title"));
    reviewRequest.setTargetGroups(targetGroups);

    return reviewRequest;
  }