diff --git a/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java b/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java
index 8a65ca5..f7358b5 100644
--- a/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java
+++ b/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java
@@ -298,7 +298,7 @@
         } else {
             if ((currentEvent == START_ELEMENT)
                     || (currentEvent == END_ELEMENT)) {
-                return getQName((OMElement) lastNode);
+                return ((OMElement)lastNode).getQName();
             } else {
                 throw new IllegalStateException();
             }
@@ -1417,30 +1417,6 @@
      * ####################################################################
      */
 
-    /**
-     * Helper method getQName.
-     *
-     * @param element
-     * @return Returns QName.
-     */
-    private QName getQName(OMElement element) {
-        QName returnName;
-        OMNamespace ns = element.getNamespace();
-        String localPart = element.getLocalName();
-        if (ns != null) {
-            String prefix = ns.getPrefix();
-            String uri = ns.getNamespaceURI();
-            if (prefix.length() == 0) {
-                returnName = new QName(uri, localPart);
-            } else {
-                returnName = new QName(uri, localPart, prefix);
-            }
-        } else {
-            returnName = new QName(localPart);
-        }
-        return returnName;
-    }
-
     private void setParser(XMLStreamReader parser) {
         this.parser = parser;
         dataHandlerReader =
