code: public List<WordTag> process(List list) {
      List<IN> featureLabels = new ArrayList<IN>();
      for (Object o : list) {
        CoreLabel wi = new CoreLabel();
        if (o instanceof HasWord) {
          wi.setWord(((HasWord) o).word());
          if (o instanceof HasTag) {
            wi.setTag(((HasTag) o).tag());
          }
        } else {
          wi.setWord(o.toString());
        }
        featureLabels.add((IN) wi);
      }
      List<IN> tagged = classify(featureLabels);
      List<WordTag> out = new ArrayList<WordTag>();
      for (CoreLabel wi : tagged) {
        out.add(new WordTag(wi.word(), wi.get(AnswerAnnotation.class)));
      }
      return out;
    }
docs: TODO: require this list to have things that are instanceof HasWord?