anchor.diff:  
     static List<Token> getTokens(TokenStream tstream) throws IOException {
       List<Token> tokens = new ArrayList<Token>();
  +    TermAttribute termAtt = (TermAttribute) tstream.addAttribute(TermAttribute.class);
  +    OffsetAttribute offsetAtt = (OffsetAttribute) tstream.addAttribute (OffsetAttribute.class);
  +    TypeAttribute typeAtt = (TypeAttribute) tstream.addAttribute (TypeAttribute.class);
  +    FlagsAttribute flagsAtt = (FlagsAttribute) tstream.addAttribute (FlagsAttribute.class);
  +    PayloadAttribute payloadAtt = (PayloadAttribute) tstream.addAttribute (PayloadAttribute.class);
  +    PositionIncrementAttribute posIncAtt = (PositionIncrementAttribute) tstream.addAttribute (PositionIncrementAttribute.class);
  +   
       while (true) {
  -      Token t = tstream.next();
  -      if (t==null) break;
  -      tokens.add(t);
  +      if (!tstream.incrementToken())
  +        break;
  +      else {
  +      	Token token = new Token();
  +      	token.setTermBuffer(termAtt.termBuffer(), 0, termAtt.termLength());
  +      	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;
     }
  
positive.code:                  org.apache.lucene.index.Payload,
                   org.apache.lucene.analysis.CharReader,
                   org.apache.lucene.analysis.CharStream,
                   org.apache.solr.analysis.CharFilterFactory,
                   org.apache.solr.analysis.TokenFilterFactory,
                   org.apache.solr.analysis.TokenizerChain,
  
negative.code: 
           final Iterator<Token> iter = tokens.iterator();
           tstream = filtfac.create( new TokenStream() {
             TermAttribute termAtt = (TermAttribute) addAttribute(TermAttribute.class);
             OffsetAttribute offsetAtt = (OffsetAttribute) addAttribute (OffsetAttribute.class);
             TypeAttribute typeAtt = (TypeAttribute) addAttribute (TypeAttribute.class);
             FlagsAttribute flagsAtt = (FlagsAttribute) addAttribute (FlagsAttribute.class);
             PayloadAttribute payloadAtt = (PayloadAttribute) addAttribute (PayloadAttribute.class);
             PositionIncrementAttribute posIncAtt = (PositionIncrementAttribute) addAttribute (PositionIncrementAttribute.class);
             
             public boolean incrementToken() throws IOException {
               if (iter.hasNext()) {
                 Token token = iter.next();
                 termAtt.setTermBuffer(token.termBuffer(), 0, token.termLength());
                 offsetAtt.setOffset(token.startOffset(), token.endOffset());
                 typeAtt.setType(token.type());
                 flagsAtt.setFlags(token.getFlags());
                 posIncAtt.setPositionIncrement(token.getPositionIncrement());
                 payloadAtt.setPayload(token.getPayload());
                 return true;
               } else {
                 return false;
               }
             }
            }
           );
  