Index: src/java/org/apache/lucene/analysis/TokenStream.java
===================================================================
--- src/java/org/apache/lucene/analysis/TokenStream.java	(revision 816218)
+++ src/java/org/apache/lucene/analysis/TokenStream.java	(working copy)
@@ -397,7 +397,8 @@
       throw new UnsupportedOperationException("This TokenStream only supports the new Attributes API.");
     
     if (supportedMethods.hasIncrementToken) {
-      return incrementToken() ? ((Token) tokenWrapper.delegate.clone()) : null;
+      tokenWrapper.delegate = (Token) tokenWrapper.delegate.clone();
+      return incrementToken() ? (tokenWrapper.delegate) : null;
     } else {
       assert supportedMethods.hasReusableNext;
       final Token token = next(tokenWrapper.delegate);
Index: src/test/org/apache/lucene/analysis/TestTokenStreamBWComp.java
===================================================================
--- src/test/org/apache/lucene/analysis/TestTokenStreamBWComp.java	(revision 816218)
+++ src/test/org/apache/lucene/analysis/TestTokenStreamBWComp.java	(working copy)
@@ -325,4 +325,12 @@
     }
   }
   
+  public void testMixedOldApi() throws Exception {
+	TokenStream stream = new WhitespaceTokenizer(new StringReader("foo bar"));
+	Token foo = new Token();
+	foo = stream.next(foo);
+	Token bar = stream.next();
+	assertEquals("foo", foo.termText());
+  }
+  
 }
