anchor.diff:      if (verbose) {
         printRow(out,"term type", arr, new ToStr() {
           public String toStr(Object o) {
  -          String tt =  ((Tok)o).token.type();
  +          String tt =  ((Tok)o).token.addAttribute(TypeAttribute.class).type();
             if (tt == null) {
                return "null";
             } else {
  
positive.code:     if (verbose) {
        printRow(out,"source start,end", arr, new ToStr() {
          public String toStr(Object o) {
            Token t = ((Tok)o).token;
            return Integer.toString(t.startOffset()) + ',' + t.endOffset() ;
          }
        }
                ,true
  
negative.code:     HashMap<Integer,List<Tok>> map = new HashMap<Integer,List<Tok>>();
      boolean needRaw=false;
      int pos=0;
      for (AttributeSource t : tokens) {
        if (!t.toString().equals(ft.indexedToReadable(t.toString()))) {
          needRaw=true;
        }
  
        pos += t.addAttribute(PositionIncrementAttribute.class).getPositionIncrement();
        List lst = map.get(pos);
        if (lst==null) {
          lst = new ArrayList(1);
  