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:   }
  
  
    static List<Token> getTokens(TokenStream tstream) throws IOException {
      List<Token> tokens = new ArrayList<Token>();
      CharTermAttribute termAtt = tstream.addAttribute(CharTermAttribute.class);
      OffsetAttribute offsetAtt = tstream.addAttribute (OffsetAttribute.class);
      TypeAttribute typeAtt = tstream.addAttribute (TypeAttribute.class);
      FlagsAttribute flagsAtt = tstream.addAttribute (FlagsAttribute.class);
      PayloadAttribute payloadAtt = tstream.addAttribute (PayloadAttribute.class);
      PositionIncrementAttribute posIncAtt = tstream.addAttribute (PositionIncrementAttribute.class);
     
      while (true) {
        if (!tstream.incrementToken())
          break;
        else {
        	Token token = new Token();
        	token.copyBuffer(termAtt.buffer(), 0, termAtt.length());
        	token.setType(typeAtt.type());
        	token.setOffset(offsetAtt.startOffset(), offsetAtt.endOffset());
        	token.setPayload(payloadAtt.getPayload());
        	token.setFlags(flagsAtt.getFlags());
        	token.setPositionIncrement(posIncAtt.getPositionIncrement());
        	tokens.add(token);
        }
      }
      return tokens;
  
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);
  