diff --git a/samples/ExternalFunction/ExternalFunction.cpp b/samples/ExternalFunction/ExternalFunction.cpp
index 987a39b..5b758ca 100644
--- a/samples/ExternalFunction/ExternalFunction.cpp
+++ b/samples/ExternalFunction/ExternalFunction.cpp
@@ -96,11 +96,7 @@
      *
      * @return pointer to the new object
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSquareRoot*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -181,11 +177,7 @@
      *
      * @return pointer to the new object
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionCube*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -277,11 +269,7 @@
      *
      * @return pointer to the new object
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionAsctime*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/Include/VCPPDefinitions.hpp b/src/xalanc/Include/VCPPDefinitions.hpp
index 3c2e23b..e11a742 100644
--- a/src/xalanc/Include/VCPPDefinitions.hpp
+++ b/src/xalanc/Include/VCPPDefinitions.hpp
@@ -35,18 +35,14 @@
 #define XALAN_PLATFORM_IMPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT T
 
 
-#if _MSC_VER >= 1300
-  #if !defined(__INTEL_COMPILER)
-    #if _MSC_VER >= 1400
-      #define XALAN_AUTO_PTR_REQUIRES_DEFINITION
-      #define XALAN_USE_WINDOWS_COLLATION
-    #endif
+#if !defined(__INTEL_COMPILER)
+  #if _MSC_VER >= 1400
+    #define XALAN_AUTO_PTR_REQUIRES_DEFINITION
+    #define XALAN_USE_WINDOWS_COLLATION
   #endif
-  #if _MSC_VER == 1300
-    #define XALAN_VCPP_USE_PTRIT
-  #endif
-#else
-  #define XALAN_NO_COVARIANT_RETURN_TYPE
+#endif
+#if _MSC_VER == 1300
+  #define XALAN_VCPP_USE_PTRIT
 #endif
 
 #define XALAN_NEWLINE_IS_CRLF
diff --git a/src/xalanc/XPath/FunctionConcat.cpp b/src/xalanc/XPath/FunctionConcat.cpp
index a9bf739..4458dbf 100644
--- a/src/xalanc/XPath/FunctionConcat.cpp
+++ b/src/xalanc/XPath/FunctionConcat.cpp
@@ -114,11 +114,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionConcat*
-#endif
 FunctionConcat::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionConcat.hpp b/src/xalanc/XPath/FunctionConcat.hpp
index 6e5aa23..d1b57af 100644
--- a/src/xalanc/XPath/FunctionConcat.hpp
+++ b/src/xalanc/XPath/FunctionConcat.hpp
@@ -76,11 +76,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionConcat*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionContains.cpp b/src/xalanc/XPath/FunctionContains.cpp
index f293162..14411e6 100644
--- a/src/xalanc/XPath/FunctionContains.cpp
+++ b/src/xalanc/XPath/FunctionContains.cpp
@@ -81,11 +81,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionContains*
-#endif
 FunctionContains::clone(MemoryManager& theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionContains.hpp b/src/xalanc/XPath/FunctionContains.hpp
index d3dcddb..07e0032 100644
--- a/src/xalanc/XPath/FunctionContains.hpp
+++ b/src/xalanc/XPath/FunctionContains.hpp
@@ -60,11 +60,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionContains*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionID.cpp b/src/xalanc/XPath/FunctionID.cpp
index 7e23fff..4c1d104 100644
--- a/src/xalanc/XPath/FunctionID.cpp
+++ b/src/xalanc/XPath/FunctionID.cpp
@@ -124,11 +124,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionID*
-#endif
 FunctionID::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionID.hpp b/src/xalanc/XPath/FunctionID.hpp
index 50aacb3..3e3f946 100644
--- a/src/xalanc/XPath/FunctionID.hpp
+++ b/src/xalanc/XPath/FunctionID.hpp
@@ -76,11 +76,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionID*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionLang.cpp b/src/xalanc/XPath/FunctionLang.cpp
index 73aa04b..25285f7 100644
--- a/src/xalanc/XPath/FunctionLang.cpp
+++ b/src/xalanc/XPath/FunctionLang.cpp
@@ -121,11 +121,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionLang*
-#endif
 FunctionLang::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionLang.hpp b/src/xalanc/XPath/FunctionLang.hpp
index 0ad3a12..2eb35f0 100644
--- a/src/xalanc/XPath/FunctionLang.hpp
+++ b/src/xalanc/XPath/FunctionLang.hpp
@@ -72,11 +72,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionLang*
-#endif
     clone(MemoryManager&    theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionNamespaceURI.cpp b/src/xalanc/XPath/FunctionNamespaceURI.cpp
index 160079b..8bb1113 100644
--- a/src/xalanc/XPath/FunctionNamespaceURI.cpp
+++ b/src/xalanc/XPath/FunctionNamespaceURI.cpp
@@ -110,11 +110,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionNamespaceURI*
-#endif
 FunctionNamespaceURI::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionNamespaceURI.hpp b/src/xalanc/XPath/FunctionNamespaceURI.hpp
index 4c62952..d431a94 100644
--- a/src/xalanc/XPath/FunctionNamespaceURI.hpp
+++ b/src/xalanc/XPath/FunctionNamespaceURI.hpp
@@ -73,11 +73,7 @@
             const XObjectPtr        arg1,
             const Locator*          locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionNamespaceURI*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionNormalizeSpace.cpp b/src/xalanc/XPath/FunctionNormalizeSpace.cpp
index 09b9f62..a25d11f 100644
--- a/src/xalanc/XPath/FunctionNormalizeSpace.cpp
+++ b/src/xalanc/XPath/FunctionNormalizeSpace.cpp
@@ -200,11 +200,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionNormalizeSpace*
-#endif
 FunctionNormalizeSpace::clone(MemoryManager& theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionNormalizeSpace.hpp b/src/xalanc/XPath/FunctionNormalizeSpace.hpp
index a12ea0f..432859f 100644
--- a/src/xalanc/XPath/FunctionNormalizeSpace.hpp
+++ b/src/xalanc/XPath/FunctionNormalizeSpace.hpp
@@ -69,11 +69,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionNormalizeSpace*
-#endif
     clone(MemoryManager&    theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionStartsWith.cpp b/src/xalanc/XPath/FunctionStartsWith.cpp
index 5d5b200..35a2e16 100644
--- a/src/xalanc/XPath/FunctionStartsWith.cpp
+++ b/src/xalanc/XPath/FunctionStartsWith.cpp
@@ -63,11 +63,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionStartsWith*
-#endif
 FunctionStartsWith::clone(MemoryManager& theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionStartsWith.hpp b/src/xalanc/XPath/FunctionStartsWith.hpp
index d80e1cf..6a92609 100644
--- a/src/xalanc/XPath/FunctionStartsWith.hpp
+++ b/src/xalanc/XPath/FunctionStartsWith.hpp
@@ -60,11 +60,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionStartsWith*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionString.cpp b/src/xalanc/XPath/FunctionString.cpp
index 4993df3..2834bf5 100644
--- a/src/xalanc/XPath/FunctionString.cpp
+++ b/src/xalanc/XPath/FunctionString.cpp
@@ -116,11 +116,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionString*
-#endif
 FunctionString::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionString.hpp b/src/xalanc/XPath/FunctionString.hpp
index 685d498..99a0739 100644
--- a/src/xalanc/XPath/FunctionString.hpp
+++ b/src/xalanc/XPath/FunctionString.hpp
@@ -73,11 +73,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionString*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionSubstring.cpp b/src/xalanc/XPath/FunctionSubstring.cpp
index 3115427..0d8e6c8 100644
--- a/src/xalanc/XPath/FunctionSubstring.cpp
+++ b/src/xalanc/XPath/FunctionSubstring.cpp
@@ -281,11 +281,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionSubstring*
-#endif
 FunctionSubstring::clone(MemoryManager&     theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionSubstring.hpp b/src/xalanc/XPath/FunctionSubstring.hpp
index 95dbb07..00b2b0a 100644
--- a/src/xalanc/XPath/FunctionSubstring.hpp
+++ b/src/xalanc/XPath/FunctionSubstring.hpp
@@ -77,11 +77,7 @@
             const XObjectPtr        arg3,
             const Locator*          locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSubstring*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionSubstringAfter.cpp b/src/xalanc/XPath/FunctionSubstringAfter.cpp
index cb15a19..9a0dbc0 100644
--- a/src/xalanc/XPath/FunctionSubstringAfter.cpp
+++ b/src/xalanc/XPath/FunctionSubstringAfter.cpp
@@ -119,11 +119,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionSubstringAfter*
-#endif
 FunctionSubstringAfter::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionSubstringAfter.hpp b/src/xalanc/XPath/FunctionSubstringAfter.hpp
index 1e13c30..24f4a04 100644
--- a/src/xalanc/XPath/FunctionSubstringAfter.hpp
+++ b/src/xalanc/XPath/FunctionSubstringAfter.hpp
@@ -60,11 +60,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSubstringAfter*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionSubstringBefore.cpp b/src/xalanc/XPath/FunctionSubstringBefore.cpp
index 5e09db9..0b2f896 100644
--- a/src/xalanc/XPath/FunctionSubstringBefore.cpp
+++ b/src/xalanc/XPath/FunctionSubstringBefore.cpp
@@ -110,11 +110,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionSubstringBefore*
-#endif
 FunctionSubstringBefore::clone(MemoryManager&   theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionSubstringBefore.hpp b/src/xalanc/XPath/FunctionSubstringBefore.hpp
index 1dfd001..144fb22 100644
--- a/src/xalanc/XPath/FunctionSubstringBefore.hpp
+++ b/src/xalanc/XPath/FunctionSubstringBefore.hpp
@@ -60,11 +60,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSubstringBefore*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XPath/FunctionTranslate.cpp b/src/xalanc/XPath/FunctionTranslate.cpp
index 7673796..9231d99 100644
--- a/src/xalanc/XPath/FunctionTranslate.cpp
+++ b/src/xalanc/XPath/FunctionTranslate.cpp
@@ -110,11 +110,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionTranslate*
-#endif
 FunctionTranslate::clone(MemoryManager&     theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XPath/FunctionTranslate.hpp b/src/xalanc/XPath/FunctionTranslate.hpp
index 93bd76c..c4bf67e 100644
--- a/src/xalanc/XPath/FunctionTranslate.hpp
+++ b/src/xalanc/XPath/FunctionTranslate.hpp
@@ -61,11 +61,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionTranslate*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XSLT/FunctionCurrent.cpp b/src/xalanc/XSLT/FunctionCurrent.cpp
index bce04ae..2381ed4 100644
--- a/src/xalanc/XSLT/FunctionCurrent.cpp
+++ b/src/xalanc/XSLT/FunctionCurrent.cpp
@@ -56,11 +56,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionCurrent*
-#endif
 FunctionCurrent::clone(MemoryManager&   theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XSLT/FunctionCurrent.hpp b/src/xalanc/XSLT/FunctionCurrent.hpp
index 9b4bfcd..4b83935 100644
--- a/src/xalanc/XSLT/FunctionCurrent.hpp
+++ b/src/xalanc/XSLT/FunctionCurrent.hpp
@@ -61,11 +61,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionCurrent*
-#endif
     clone(MemoryManager& theManager) const;
 
 private:
diff --git a/src/xalanc/XSLT/FunctionDocument.cpp b/src/xalanc/XSLT/FunctionDocument.cpp
index e45532f..bd02cff 100644
--- a/src/xalanc/XSLT/FunctionDocument.cpp
+++ b/src/xalanc/XSLT/FunctionDocument.cpp
@@ -582,11 +582,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionDocument*
-#endif
 FunctionDocument::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XSLT/FunctionDocument.hpp b/src/xalanc/XSLT/FunctionDocument.hpp
index ab7d789..4b8e6d8 100644
--- a/src/xalanc/XSLT/FunctionDocument.hpp
+++ b/src/xalanc/XSLT/FunctionDocument.hpp
@@ -65,11 +65,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionDocument*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XSLT/FunctionElementAvailable.cpp b/src/xalanc/XSLT/FunctionElementAvailable.cpp
index 424bbcf..e763944 100644
--- a/src/xalanc/XSLT/FunctionElementAvailable.cpp
+++ b/src/xalanc/XSLT/FunctionElementAvailable.cpp
@@ -59,11 +59,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionElementAvailable*
-#endif
 FunctionElementAvailable::clone(MemoryManager& theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XSLT/FunctionElementAvailable.hpp b/src/xalanc/XSLT/FunctionElementAvailable.hpp
index b02b174..b7d9251 100644
--- a/src/xalanc/XSLT/FunctionElementAvailable.hpp
+++ b/src/xalanc/XSLT/FunctionElementAvailable.hpp
@@ -62,11 +62,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionElementAvailable*
-#endif
     clone(MemoryManager& theManager) const;
 
 private:
diff --git a/src/xalanc/XSLT/FunctionFormatNumber.cpp b/src/xalanc/XSLT/FunctionFormatNumber.cpp
index de9c805..de3226e 100644
--- a/src/xalanc/XSLT/FunctionFormatNumber.cpp
+++ b/src/xalanc/XSLT/FunctionFormatNumber.cpp
@@ -99,11 +99,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionFormatNumber*
-#endif
 FunctionFormatNumber::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XSLT/FunctionFormatNumber.hpp b/src/xalanc/XSLT/FunctionFormatNumber.hpp
index 61c4436..72e9d22 100644
--- a/src/xalanc/XSLT/FunctionFormatNumber.hpp
+++ b/src/xalanc/XSLT/FunctionFormatNumber.hpp
@@ -65,11 +65,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionFormatNumber*
-#endif
     clone(MemoryManager& theManager) const;
 
 private:
diff --git a/src/xalanc/XSLT/FunctionFunctionAvailable.cpp b/src/xalanc/XSLT/FunctionFunctionAvailable.cpp
index d287d30..cca59ac 100644
--- a/src/xalanc/XSLT/FunctionFunctionAvailable.cpp
+++ b/src/xalanc/XSLT/FunctionFunctionAvailable.cpp
@@ -61,11 +61,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionFunctionAvailable*
-#endif
 FunctionFunctionAvailable::clone(MemoryManager&     theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XSLT/FunctionFunctionAvailable.hpp b/src/xalanc/XSLT/FunctionFunctionAvailable.hpp
index b992a7f..a54e10f 100644
--- a/src/xalanc/XSLT/FunctionFunctionAvailable.hpp
+++ b/src/xalanc/XSLT/FunctionFunctionAvailable.hpp
@@ -62,11 +62,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionFunctionAvailable*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XSLT/FunctionGenerateID.cpp b/src/xalanc/XSLT/FunctionGenerateID.cpp
index b7530fe..f8cc3cb 100644
--- a/src/xalanc/XSLT/FunctionGenerateID.cpp
+++ b/src/xalanc/XSLT/FunctionGenerateID.cpp
@@ -132,11 +132,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionGenerateID*
-#endif
 FunctionGenerateID::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XSLT/FunctionGenerateID.hpp b/src/xalanc/XSLT/FunctionGenerateID.hpp
index bed64a2..d408bdd 100644
--- a/src/xalanc/XSLT/FunctionGenerateID.hpp
+++ b/src/xalanc/XSLT/FunctionGenerateID.hpp
@@ -65,11 +65,7 @@
             const XObjectPtr        arg1,
             const Locator*          locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionGenerateID*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XSLT/FunctionKey.cpp b/src/xalanc/XSLT/FunctionKey.cpp
index 0e99987..0615c91 100644
--- a/src/xalanc/XSLT/FunctionKey.cpp
+++ b/src/xalanc/XSLT/FunctionKey.cpp
@@ -189,11 +189,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionKey*
-#endif
 FunctionKey::clone(MemoryManager&   theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XSLT/FunctionKey.hpp b/src/xalanc/XSLT/FunctionKey.hpp
index 22e20d6..fbb3c2f 100644
--- a/src/xalanc/XSLT/FunctionKey.hpp
+++ b/src/xalanc/XSLT/FunctionKey.hpp
@@ -63,11 +63,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionKey*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XSLT/FunctionSystemProperty.cpp b/src/xalanc/XSLT/FunctionSystemProperty.cpp
index 45bf366..2192d5c 100644
--- a/src/xalanc/XSLT/FunctionSystemProperty.cpp
+++ b/src/xalanc/XSLT/FunctionSystemProperty.cpp
@@ -198,11 +198,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionSystemProperty*
-#endif
 FunctionSystemProperty::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this, theManager);
diff --git a/src/xalanc/XSLT/FunctionSystemProperty.hpp b/src/xalanc/XSLT/FunctionSystemProperty.hpp
index 681761f..3a5209d 100644
--- a/src/xalanc/XSLT/FunctionSystemProperty.hpp
+++ b/src/xalanc/XSLT/FunctionSystemProperty.hpp
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSystemProperty*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp b/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp
index 77a925f..6fd86a6 100644
--- a/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp
+++ b/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp
@@ -91,11 +91,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionUnparsedEntityURI*
-#endif
 FunctionUnparsedEntityURI::clone(MemoryManager&     theManager) const
 {
    return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp b/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp
index f03ce8c..22a49df 100644
--- a/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp
+++ b/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp
@@ -58,11 +58,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionUnparsedEntityURI*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp
index 786a3f4..cdd70a3 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp
@@ -54,11 +54,7 @@
     {
     }
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionNodeSet*
-#endif
     clone(MemoryManager& theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -146,11 +142,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionObjectType*
-#endif
     clone(MemoryManager& theManager) const
     {
         typedef XalanEXSLTFunctionObjectType    ThisType;
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp
index 0d10bc7..ae2f2d2 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp
@@ -58,11 +58,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionDateTime*
-#endif
     clone(MemoryManager& theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp
index 23407f0..4192d49 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp
@@ -65,11 +65,7 @@
             const XObjectArgVectorType&     args,
             const Locator*                  locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionEvaluate*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp
index daafc04..a5c7062 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp
@@ -62,11 +62,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAbs*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -115,11 +111,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionRandom*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -168,11 +160,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAcos*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -221,11 +209,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAsin*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -274,11 +258,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAtan*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -327,11 +307,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAtan2*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -380,11 +356,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionConstant*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -456,11 +428,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionCos*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -509,11 +477,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionExp*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -562,11 +526,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionHighest*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -615,11 +575,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionLog*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -668,11 +624,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionLowest*
-#endif
     clone(MemoryManager&  theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -721,11 +673,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionMax*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -774,11 +722,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionMin*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -827,11 +771,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionPower*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -880,11 +820,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionSin*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -933,11 +869,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionSqrt*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -986,11 +918,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionTan*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp
index a14e3b3..773f2ee 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp
@@ -56,11 +56,7 @@
     {
     }
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionDifference*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -103,11 +99,7 @@
     {
     }
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionDistinct*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -164,11 +156,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionHasSameNode*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -213,11 +201,7 @@
     {
     }
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionIntersection*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -273,11 +257,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionLeading*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -333,11 +313,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionTrailing*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp
index 6b2f62e..fc6806a 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp
@@ -63,11 +63,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAlign*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -128,11 +124,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionConcat*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -206,11 +198,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionPadding*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this, theManager);
@@ -273,11 +261,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionEncodeURI*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -344,11 +328,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionDecodeURI*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanExtensions/FunctionDifference.cpp b/src/xalanc/XalanExtensions/FunctionDifference.cpp
index b41aeb2..0d8f0ac 100644
--- a/src/xalanc/XalanExtensions/FunctionDifference.cpp
+++ b/src/xalanc/XalanExtensions/FunctionDifference.cpp
@@ -91,11 +91,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionDifference*
-#endif
 FunctionDifference::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanExtensions/FunctionDifference.hpp b/src/xalanc/XalanExtensions/FunctionDifference.hpp
index c59d1da..8b983bc 100644
--- a/src/xalanc/XalanExtensions/FunctionDifference.hpp
+++ b/src/xalanc/XalanExtensions/FunctionDifference.hpp
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionDifference*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XalanExtensions/FunctionDistinct.cpp b/src/xalanc/XalanExtensions/FunctionDistinct.cpp
index c77e2be..05ba4b8 100644
--- a/src/xalanc/XalanExtensions/FunctionDistinct.cpp
+++ b/src/xalanc/XalanExtensions/FunctionDistinct.cpp
@@ -124,11 +124,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionDistinct*
-#endif
 FunctionDistinct::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanExtensions/FunctionDistinct.hpp b/src/xalanc/XalanExtensions/FunctionDistinct.hpp
index c3176e2..314faa1 100644
--- a/src/xalanc/XalanExtensions/FunctionDistinct.hpp
+++ b/src/xalanc/XalanExtensions/FunctionDistinct.hpp
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionDistinct*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XalanExtensions/FunctionEvaluate.cpp b/src/xalanc/XalanExtensions/FunctionEvaluate.cpp
index 8902acf..7a84751 100644
--- a/src/xalanc/XalanExtensions/FunctionEvaluate.cpp
+++ b/src/xalanc/XalanExtensions/FunctionEvaluate.cpp
@@ -159,11 +159,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionEvaluate*
-#endif
 FunctionEvaluate::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanExtensions/FunctionEvaluate.hpp b/src/xalanc/XalanExtensions/FunctionEvaluate.hpp
index a41497a..273364c 100644
--- a/src/xalanc/XalanExtensions/FunctionEvaluate.hpp
+++ b/src/xalanc/XalanExtensions/FunctionEvaluate.hpp
@@ -59,11 +59,7 @@
             const XObjectArgVectorType&     args,
             const Locator*                  locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionEvaluate*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp b/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp
index 5bf9d52..7f9f6db 100644
--- a/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp
+++ b/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp
@@ -91,11 +91,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionHasSameNodes*
-#endif
 FunctionHasSameNodes::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp b/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp
index 9feafd0..f078d29 100644
--- a/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp
+++ b/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionHasSameNodes*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XalanExtensions/FunctionIntersection.cpp b/src/xalanc/XalanExtensions/FunctionIntersection.cpp
index 6c428c9..c43b418 100644
--- a/src/xalanc/XalanExtensions/FunctionIntersection.cpp
+++ b/src/xalanc/XalanExtensions/FunctionIntersection.cpp
@@ -88,11 +88,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionIntersection*
-#endif
 FunctionIntersection::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanExtensions/FunctionIntersection.hpp b/src/xalanc/XalanExtensions/FunctionIntersection.hpp
index dd8678e..6d2dedf 100644
--- a/src/xalanc/XalanExtensions/FunctionIntersection.hpp
+++ b/src/xalanc/XalanExtensions/FunctionIntersection.hpp
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionIntersection*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XalanExtensions/FunctionNodeSet.cpp b/src/xalanc/XalanExtensions/FunctionNodeSet.cpp
index 98ba884..fc368a8 100644
--- a/src/xalanc/XalanExtensions/FunctionNodeSet.cpp
+++ b/src/xalanc/XalanExtensions/FunctionNodeSet.cpp
@@ -175,11 +175,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionNodeSet*
-#endif
 FunctionNodeSet::clone(MemoryManager&   theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
diff --git a/src/xalanc/XalanExtensions/FunctionNodeSet.hpp b/src/xalanc/XalanExtensions/FunctionNodeSet.hpp
index 23e5349..cb1db2d 100644
--- a/src/xalanc/XalanExtensions/FunctionNodeSet.hpp
+++ b/src/xalanc/XalanExtensions/FunctionNodeSet.hpp
@@ -68,11 +68,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionNodeSet*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp
index 44bcefc..f86d20c 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp
@@ -155,11 +155,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanDocument*
-#else
 XalanSourceTreeDocument*
-#endif
 XalanSourceTreeDocumentFragment::getOwnerDocument() const
 {
     return m_ownerDocument;
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp
index efc722b..0aabc44 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp
@@ -30,9 +30,7 @@
 
 
 
-#if !defined(XALAN_NO_COVARIANT_RETURN_TYPE)
 #include <xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp>
-#endif
 
 
 
@@ -96,11 +94,7 @@
     virtual const XalanNamedNodeMap*
     getAttributes() const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanDocument*
-#else
     virtual XalanSourceTreeDocument*
-#endif
     getOwnerDocument() const;
 
     virtual const XalanDOMString&
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp
index 55d84db..ed475a0 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp
@@ -150,23 +150,15 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesAttrBridge*
-#endif
 XercesAttrBridge::cloneNode(bool    deep) const
 {
     assert(m_navigator.getOwnerDocument() != 0);
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesAttrBridge* const     theBridge =
         static_cast<XercesAttrBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp
index c15de63..4781565 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp
@@ -183,11 +183,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesAttrBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp
index 79056c8..643c337 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp
@@ -147,21 +147,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesCDATASectionBridge*
-#endif
 XercesCDATASectionBridge::cloneNode(bool    deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesCDATASectionBridge* const theBridge =
         static_cast<XercesCDATASectionBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp
index 8d0ab26..48572db 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp
@@ -183,11 +183,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesCDATASectionBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp
index ee3c4b9..c50a72f 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp
@@ -143,21 +143,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesCommentBridge*
-#endif
 XercesCommentBridge::cloneNode(bool deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesCommentBridge* const  theBridge =
         static_cast<XercesCommentBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp
index ab21c9f..6b52505 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp
@@ -183,11 +183,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesCommentBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp
index 817bf34..1e7abe0 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp
@@ -862,11 +862,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesDocumentBridge*
-#endif
 XercesDocumentBridge::cloneNode(bool    deep) const
 {
     XercesDocumentBridge*   theBridge = 0;
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp
index 1be392f..a94d72d 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp
@@ -153,11 +153,7 @@
     virtual XalanDocument*
     getOwnerDocument() const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesDocumentBridge*
-#endif
     cloneNode(bool deep) const;
 
     virtual XalanNode*
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp
index e57b3fa..0743ea8 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp
@@ -148,21 +148,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesDocumentFragmentBridge*
-#endif
 XercesDocumentFragmentBridge::cloneNode(bool    deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesDocumentFragmentBridge* const theBridge =
         static_cast<XercesDocumentFragmentBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp
index ced66b9..516bc07 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp
@@ -184,11 +184,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesDocumentFragmentBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp
index dcbe619..085fcf2 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp
@@ -147,24 +147,16 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesDocumentTypeBridge*
-#endif
 XercesDocumentTypeBridge::cloneNode(bool    deep) const
 {
     // $$$ ToDo: Fix this!! XercesDocumentType nodes can't be cloned yet...
     assert(false);
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesDocumentTypeBridge* const     theBridge =
         static_cast<XercesDocumentTypeBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp
index ebced3e..fc5a577 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp
@@ -184,11 +184,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesDocumentTypeBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp
index 14c5ed2..504c33e 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp
@@ -152,21 +152,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesElementBridge*
-#endif
 XercesElementBridge::cloneNode(bool deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesElementBridge* const  theBridge =
         static_cast<XercesElementBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp
index 7feaf20..aa3dcc8 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp
@@ -191,11 +191,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesElementBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp
index 0666f2e..6a44d5e 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp
@@ -145,21 +145,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesEntityBridge*
-#endif
 XercesEntityBridge::cloneNode(bool  deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesEntityBridge* const   theBridge =
         static_cast<XercesEntityBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp
index aca1519..465c613 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp
@@ -184,11 +184,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesEntityBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp
index aadb2d0..73b8277 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp
@@ -144,21 +144,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesEntityReferenceBridge*
-#endif
 XercesEntityReferenceBridge::cloneNode(bool     deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesEntityReferenceBridge* const  theBridge =
         static_cast<XercesEntityReferenceBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp
index e5a25e0..e2ff74f 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp
@@ -183,11 +183,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesEntityReferenceBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp
index 574c3fc..a04e011 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp
@@ -142,21 +142,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesNotationBridge*
-#endif
 XercesNotationBridge::cloneNode(bool    deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesNotationBridge* const     theBridge =
         static_cast<XercesNotationBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp
index a135c53..3f053ed 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp
@@ -182,11 +182,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesNotationBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp
index c246b9a..06db988 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp
@@ -143,21 +143,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesProcessingInstructionBridge*
-#endif
 XercesProcessingInstructionBridge::cloneNode(bool   deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesProcessingInstructionBridge* const    theBridge =
         static_cast<XercesProcessingInstructionBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp
index 6049226..4a8f8ac 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp
@@ -182,11 +182,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesProcessingInstructionBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp
index a3e7d4e..6d1ea48 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp
@@ -149,21 +149,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesTextBridge*
-#endif
 XercesTextBridge::cloneNode(bool    deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesTextBridge* const theBridge =
         static_cast<XercesTextBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp
index f5def41..4fab5b8 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp
@@ -184,11 +184,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesTextBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
diff --git a/xdocs/sources/xalan/extensions.xml b/xdocs/sources/xalan/extensions.xml
index b431ed9..74991d1 100644
--- a/xdocs/sources/xalan/extensions.xml
+++ b/xdocs/sources/xalan/extensions.xml
@@ -107,13 +107,7 @@
    *
    * @return pointer to the new object
    */
-// For compilers that do not support covariant return types,
-// clone() must be declared to return the base type.
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-  virtual Function*
-#else
   virtual FunctionSquareRoot*
-#endif
   clone() const
   {
     return new FunctionSquareRoot(*this);
