Minor robustification, javadoc improvements
diff --git a/src/main/java/com/fasterxml/jackson/core/TreeNode.java b/src/main/java/com/fasterxml/jackson/core/TreeNode.java
index 1e4f659..8d8f8d7 100644
--- a/src/main/java/com/fasterxml/jackson/core/TreeNode.java
+++ b/src/main/java/com/fasterxml/jackson/core/TreeNode.java
@@ -261,6 +261,15 @@
      * Functionally equivalent to first serializing tree using
      * {@link ObjectCodec} and then re-parsing but
      * more efficient.
+     *<p>
+     * NOTE: constructed parser instance will NOT initially point to a token,
+     * so before passing it to deserializers, it is typically necessary to
+     * advance it to the first available token by calling {@link JsonParser#nextToken()}.
+     *<p>
+     * Also note that calling this method will <b>NOT</b> pass {@link ObjectCodec}
+     * reference, so data-binding callback methods like {@link JsonParser#readValueAs(Class)}
+     * will not work with calling {@link JsonParser#setCodec}).
+     * It is often better to call {@link #traverse(ObjectCodec)} to pass the codec explicitly.
      */
     JsonParser traverse();
 
@@ -268,6 +277,10 @@
      * Same as {@link #traverse()}, but additionally passes {@link com.fasterxml.jackson.core.ObjectCodec}
      * to use if {@link JsonParser#readValueAs(Class)} is used (otherwise caller must call
      * {@link JsonParser#setCodec} on response explicitly).
+     *<p>
+     * NOTE: constructed parser instance will NOT initially point to a token,
+     * so before passing it to deserializers, it is typically necessary to
+     * advance it to the first available token by calling {@link JsonParser#nextToken()}.
      * 
      * @since 2.1
      */
diff --git a/src/main/java/com/fasterxml/jackson/core/json/UTF8StreamJsonParser.java b/src/main/java/com/fasterxml/jackson/core/json/UTF8StreamJsonParser.java
index b903eda..f41efdb 100644
--- a/src/main/java/com/fasterxml/jackson/core/json/UTF8StreamJsonParser.java
+++ b/src/main/java/com/fasterxml/jackson/core/json/UTF8StreamJsonParser.java
@@ -166,14 +166,18 @@
      */
 
     @Override
-    protected final boolean loadMore()
-        throws IOException
+    protected final boolean loadMore() throws IOException
     {
         _currInputProcessed += _inputEnd;
         _currInputRowStart -= _inputEnd;
         
         if (_inputStream != null) {
-            int count = _inputStream.read(_inputBuffer, 0, _inputBuffer.length);
+            int space = _inputBuffer.length;
+            if (space == 0) { // only occurs when we've been closed
+                return false;
+            }
+            
+            int count = _inputStream.read(_inputBuffer, 0, space);
             if (count > 0) {
                 _inputPtr = 0;
                 _inputEnd = count;
@@ -193,8 +197,7 @@
      * Helper method that will try to load at least specified number bytes in
      * input buffer, possible moving existing data around if necessary
      */
-    protected final boolean _loadToHaveAtLeast(int minAvailable)
-        throws IOException
+    protected final boolean _loadToHaveAtLeast(int minAvailable) throws IOException
     {
         // No input stream, no leading (either we are closed, or have non-stream input source)
         if (_inputStream == null) {
@@ -257,7 +260,11 @@
         if (_bufferRecyclable) {
             byte[] buf = _inputBuffer;
             if (buf != null) {
-                _inputBuffer = null;
+                /* 21-Nov-2014, tatu: Let's not set it to null; this way should
+                 *   get slightly more meaningful error messages in case someone
+                 *   closes parser indirectly, without realizing.
+                 */
+                _inputBuffer = ByteArrayBuilder.NO_BYTES;
                 _ioContext.releaseReadIOBuffer(buf);
             }
         }
diff --git a/src/main/java/com/fasterxml/jackson/core/util/ByteArrayBuilder.java b/src/main/java/com/fasterxml/jackson/core/util/ByteArrayBuilder.java
index 376ffe9..30a2622 100644
--- a/src/main/java/com/fasterxml/jackson/core/util/ByteArrayBuilder.java
+++ b/src/main/java/com/fasterxml/jackson/core/util/ByteArrayBuilder.java
@@ -23,7 +23,7 @@
  */
 public final class ByteArrayBuilder extends OutputStream
 {
-    private final static byte[] NO_BYTES = new byte[0];
+    public final static byte[] NO_BYTES = new byte[0];
     
     // Size of the first block we will allocate.
     private final static int INITIAL_BLOCK_SIZE = 500;