@Override
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    try {
      Project project = getProject(request);

      List<String> localExpressions =
          toExpressionList(project.getMetadata().getPreferenceStore().get("scripting.expressions"));
      localExpressions =
          localExpressions.size() > 20 ? localExpressions.subList(0, 20) : localExpressions;

      List<String> globalExpressions =
          toExpressionList(
              ProjectManager.getSingleton().getPreferenceStore().get("scripting.expressions"));
      Set<String> starredExpressions =
          new HashSet<String>(
              ((TopList)
                      ProjectManager.getSingleton()
                          .getPreferenceStore()
                          .get("scripting.starred-expressions"))
                  .getList());

      Set<String> done = new HashSet<String>();

      response.setCharacterEncoding("UTF-8");
      response.setHeader("Content-Type", "application/json");

      JSONWriter writer = new JSONWriter(response.getWriter());
      writer.object();
      writer.key("expressions");
      writer.array();
      for (String s : localExpressions) {
        writer.object();
        writer.key("code");
        writer.value(s);
        writer.key("global");
        writer.value(false);
        writer.key("starred");
        writer.value(starredExpressions.contains(s));
        writer.endObject();
        done.add(s);
      }
      for (String s : globalExpressions) {
        if (!done.contains(s)) {
          writer.object();
          writer.key("code");
          writer.value(s);
          writer.key("global");
          writer.value(true);
          writer.key("starred");
          writer.value(starredExpressions.contains(s));
          writer.endObject();
        }
      }
      writer.endArray();
      writer.endObject();
    } catch (Exception e) {
      respondException(response, e);
    }
  }