code: public Event[] getEvents(boolean evalMode) {
      ArrayList elist = new ArrayList();
      //int numMatches;
      //Set frequent;
      /*
       if(!evalMode) {
       //System.out.println("Reading in all the data");
        try {
        StringBuffer sb = new StringBuffer();
        for(String s = br.readLine(); s!=null; s=br.readLine())
        sb.append(s+"\n");
        //System.out.println("Getting most frequent words");
         frequent =
         getFrequent(new BufferedReader(
         new StringReader(sb.toString())));
         br = new BufferedReader(new StringReader(sb.toString()));
         sb=null;
         } catch (IOException e) { e.printStackTrace(); }
         }
         */
      //System.out.println("Collecting events");
      try {
        String s = br.readLine();
        
        while (s != null) {
          Pair p = convertAnnotatedString(s);
          ArrayList tokens = (ArrayList)p.a;
          ArrayList outcomes = (ArrayList)p.b;
          ArrayList tags = new ArrayList();
          
          for (int i=0; i<tokens.size(); i++) {
            String[] context = cg.getContext(i,tokens.toArray(),(String[]) tags.toArray(new String[tags.size()]),null);
            Event e = new Event((String)outcomes.get(i), context);
            tags.add(outcomes.get(i));
            elist.add(e);
          }
          s = br.readLine();
        }
      } catch (Exception e) { e.printStackTrace(); }
      
      Event[] events = new Event[elist.size()];
      for(int i=0; i<events.length; i++)
        events[i] = (Event)elist.get(i);
      
      return events;
    }
docs: Builds up the list of features using the Reader as input.  For now, this
  should only be used to create training data.