Let XMLStreamReaderValidator catch unexpected END_DOCUMENT events.
diff --git a/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java b/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
index d09dddc..40d33f5 100644
--- a/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
+++ b/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
@@ -96,41 +96,32 @@
         case XMLStreamConstants.END_ELEMENT:
             QName delegateQName = super.getName();
             if (stack.isEmpty()) {
-                reportMismatchedEndElement(null, delegateQName);
+                reportError("An END_ELEMENT event for " + delegateQName + 
+                        " was encountered, but the START_ELEMENT stack is empty.");
             } else {
                 QName expectedQName = (QName) stack.pop();
                 
                 if (!expectedQName.equals(delegateQName)) {
-                    reportMismatchedEndElement(expectedQName, delegateQName);
+                    reportError("An END_ELEMENT event for " + delegateQName + 
+                            " was encountered, but this doesn't match the corresponding START_ELEMENT " + 
+                            expectedQName + " event.");
                 }
             }
             break;
-            
+        case XMLStreamConstants.END_DOCUMENT:
+            if (!stack.isEmpty()) {
+                reportError("An unexpected END_DOCUMENT event was encountered; element stack: " + stack);
+            }
+            break;
         default :
         
         }
     }
     
-    
-    /**
-     * Report a mismatched end element.
-     * @param expectedQName
-     * @param delegateQName
-     * @throws XMLStreamException 
-     */
-    private void reportMismatchedEndElement(QName expectedQName, QName delegateQName) throws XMLStreamException {
-        String text = null;
-        if (expectedQName == null) {
-            text = "An END_ELEMENT event for " + delegateQName + 
-                " was encountered, but the START_ELEMENT stack is empty.";
-        } else {
-            text = "An END_ELEMENT event for " + delegateQName + 
-                " was encountered, but this doesn't match the corresponding START_ELEMENT " + 
-                expectedQName + " event.";
-        }
-        log.debug(text);
+    private void reportError(String message) throws XMLStreamException {
+        log.debug(message);
         if (throwExceptions) {
-            throw new XMLStreamException(text);
+            throw new XMLStreamException(message);
         }
     }