OSDN Git Service

* Makefile.in: Rebuilt.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 Mar 2005 00:04:22 +0000 (00:04 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 Mar 2005 00:04:22 +0000 (00:04 +0000)
* Makefile.am (AM_CXXFLAGS): Define TOOLEXECLIBDIR.
(libgcj0_convenience_la_SOURCES): Don't include
gnu_xml_source_files.
(libgcj0_convenience_la_LIBADD): New variable.
(libgcj_la_LIBADD): Don't include sax or w3c_dom.
(all_java_source_files): javax_imageio_source_files,
javax_xml_source_files, and gnu_java_beans_source_files.
($(gnu_xml_source_files:.java=.lo)): Removed target.
(gnu-xml.lo): New target.
(javax-imageio.lo): Likewise.
(javax-xml.lo): Likewise.
(gnu-java-beans.lo): Likewise.
(gnu_java_beans_source_files): New variable.
(javax_imageio_source_files): Likewise.
(javax_xml_source_files): Likewise.
(javax_source_files): Moved files to other variable.
(awt_java_source_files): Likewise.
(ordinary_java_source_files): Added BootClassLoader.java.
* java/lang/natVMClassLoader.cc (defineClass): Use boot loader,
not system class loader.
(initBootLoader): New method.
(loadClass): Search bootLoader.
* java/lang/natClassLoader.cc (_Jv_RegisterInitiatingLoader): Use
boot loader, not system class loader.
(_Jv_UnregisterInitiatingLoader): Likewise.
(_Jv_FindClass): Likewise.  Ensure entries in
bootstrap_class_list are unique.
* java/lang/natClass.cc (getClassLoader): Don't special case
system class loader.
* java/lang/VMClassLoader.java (bootLoader): New field.
(getResource): Use bootLoader.
(getResources): Likewise.
(initBootLoader): Declare.
* gnu/gcj/runtime/BootClassLoader.java: New file.
* external/sax/org/xml/sax/helpers/NamespaceSupport.java
(EMPTY_ENUMERATION): Now package-private.
* external/w3c_com/Makefile.in: Rebuilt.
* external/w3c_com/Makefile.am (MULTIBUILDTOP): New variable.
(w3c.jar): New target.
(classes.stamp): Updated.
(toolexeclib_LTLIBRARIES): Renamed from noinst_LTLIBRARIES.
Changed name of library.
(libw3c_gcj_la_SOURCES): New variable.
(libw3c_gcj_la_GCJFLAGS): Likewise.
(source_files): Renamed from lib3c_convenience_la_SOURCES.
* external/sax/Makefile.in: Rebuilt.
* external/sax/Makefile.am (MULTIBUILDTOP): New variable.
(sax.jar): New target.
(classes.stamp): Updated.
(toolexeclib_LTLIBRARIES): Renamed from noinst_LTLIBRARIES.
Changed name of library.
(libsax_gcj_la_SOURCES): New variable.
(libsax_gcj_la_GCJFLAGS): Likewise.
(source_files): Renamed from libsax_convenience_la_SOURCES.
* stacktrace.cc (non_system_trace_fn): Don't look at system class
loader.
* prims.cc (_Jv_CreateJavaVM): Initialize the bootstrap class
loader.
(_Jv_RunMain): Handle case where 'runtime' is NULL at exit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96960 138bc75d-0d04-0410-961f-82ee72b054a4

24 files changed:
libjava/ChangeLog
libjava/Makefile.am
libjava/Makefile.in
libjava/aclocal.m4
libjava/external/Makefile.in
libjava/external/sax/Makefile.am
libjava/external/sax/Makefile.in
libjava/external/sax/org/xml/sax/helpers/NamespaceSupport.java
libjava/external/w3c_dom/Makefile.am
libjava/external/w3c_dom/Makefile.in
libjava/gcj/Makefile.in
libjava/gnu/gcj/runtime/BootClassLoader.java [new file with mode: 0644]
libjava/gnu/xml/aelfred2/JAXPFactory.java
libjava/gnu/xml/aelfred2/SAXDriver.java
libjava/gnu/xml/aelfred2/XmlParser.java
libjava/gnu/xml/aelfred2/XmlReader.java
libjava/include/Makefile.in
libjava/java/lang/VMClassLoader.java
libjava/java/lang/natClass.cc
libjava/java/lang/natClassLoader.cc
libjava/java/lang/natVMClassLoader.cc
libjava/prims.cc
libjava/stacktrace.cc
libjava/testsuite/Makefile.in

index dc31111..b2d5002 100644 (file)
@@ -1,3 +1,66 @@
+2005-03-23  Tom Tromey  <tromey@redhat.com>
+
+       * Makefile.in: Rebuilt.
+       * Makefile.am (AM_CXXFLAGS): Define TOOLEXECLIBDIR.
+       (libgcj0_convenience_la_SOURCES): Don't include
+       gnu_xml_source_files.
+       (libgcj0_convenience_la_LIBADD): New variable.
+       (libgcj_la_LIBADD): Don't include sax or w3c_dom.
+       (all_java_source_files): javax_imageio_source_files,
+       javax_xml_source_files, and gnu_java_beans_source_files.
+       ($(gnu_xml_source_files:.java=.lo)): Removed target.
+       (gnu-xml.lo): New target.
+       (javax-imageio.lo): Likewise.
+       (javax-xml.lo): Likewise.
+       (gnu-java-beans.lo): Likewise.
+       (gnu_java_beans_source_files): New variable.
+       (javax_imageio_source_files): Likewise.
+       (javax_xml_source_files): Likewise.
+       (javax_source_files): Moved files to other variable.
+       (awt_java_source_files): Likewise.
+       (ordinary_java_source_files): Added BootClassLoader.java.
+       * java/lang/natVMClassLoader.cc (defineClass): Use boot loader,
+       not system class loader.
+       (initBootLoader): New method.
+       (loadClass): Search bootLoader.
+       * java/lang/natClassLoader.cc (_Jv_RegisterInitiatingLoader): Use
+       boot loader, not system class loader.
+       (_Jv_UnregisterInitiatingLoader): Likewise.
+       (_Jv_FindClass): Likewise.  Ensure entries in
+       bootstrap_class_list are unique.
+       * java/lang/natClass.cc (getClassLoader): Don't special case
+       system class loader.
+       * java/lang/VMClassLoader.java (bootLoader): New field.
+       (getResource): Use bootLoader.
+       (getResources): Likewise.
+       (initBootLoader): Declare.
+       * gnu/gcj/runtime/BootClassLoader.java: New file.
+       * external/sax/org/xml/sax/helpers/NamespaceSupport.java
+       (EMPTY_ENUMERATION): Now package-private.
+       * external/w3c_com/Makefile.in: Rebuilt.
+       * external/w3c_com/Makefile.am (MULTIBUILDTOP): New variable.
+       (w3c.jar): New target.
+       (classes.stamp): Updated.
+       (toolexeclib_LTLIBRARIES): Renamed from noinst_LTLIBRARIES.
+       Changed name of library.
+       (libw3c_gcj_la_SOURCES): New variable.
+       (libw3c_gcj_la_GCJFLAGS): Likewise.
+       (source_files): Renamed from lib3c_convenience_la_SOURCES.
+       * external/sax/Makefile.in: Rebuilt.
+       * external/sax/Makefile.am (MULTIBUILDTOP): New variable.
+       (sax.jar): New target.
+       (classes.stamp): Updated.
+       (toolexeclib_LTLIBRARIES): Renamed from noinst_LTLIBRARIES.
+       Changed name of library.
+       (libsax_gcj_la_SOURCES): New variable.
+       (libsax_gcj_la_GCJFLAGS): Likewise.
+       (source_files): Renamed from libsax_convenience_la_SOURCES.
+       * stacktrace.cc (non_system_trace_fn): Don't look at system class
+       loader.
+       * prims.cc (_Jv_CreateJavaVM): Initialize the bootstrap class
+       loader.
+       (_Jv_RunMain): Handle case where 'runtime' is NULL at exit.
+
 2005-03-23  Sven de Marothy  <sven@physto.se>
 
        PR libgcj/2641, PR libgcj/9854, PR libgcj/14892, PR libgcj/18083,
index a9141a0..5ca1844 100644 (file)
@@ -184,7 +184,8 @@ AM_CXXFLAGS = \
        -DLIBDIR="\"$(libdir)\"" \
        -DBOOT_CLASS_PATH="\"$(jardir)/$(jar_DATA)\"" \
        -DJAVA_EXT_DIRS="\"$(jardir)/ext\"" \
-       -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\""
+       -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \
+       -DTOOLEXECLIBDIR="\"$(toolexeclibdir)\""
 
 AM_GCJFLAGS = \
        @LIBGCJ_JAVAFLAGS@ \
@@ -233,12 +234,16 @@ libgij_la_LDFLAGS = -rpath $(toolexeclibdir) \
 libgcj0_convenience_la_SOURCES = prims.cc jni.cc exception.cc stacktrace.cc \
        link.cc defineclass.cc interpret.cc verify.cc \
        $(nat_source_files) $(math_c_source_files) $(java_source_files) \
-       $(gnu_xml_source_files) $(built_java_source_files) \
+       $(built_java_source_files) \
        $(BOEHMGC_SRC) $(NOGC_SRC) \
        $(BACKTRACE_SRC) \
        $(POSIX_PLATFORM_SRC) $(WIN32_PLATFORM_SRC) $(ECOS_PLATFORM_SRC) \
        $(DARWIN_CRT_SRC) \
        $(POSIX_THREAD_SRC) $(WIN32_THREAD_SRC) $(NO_THREAD_SRC)
+libgcj0_convenience_la_LIBADD = \
+       gnu-xml.lo javax-imageio.lo \
+       javax-xml.lo gnu-java-beans.lo
+
 noinst_LTLIBRARIES = libgcj0_convenience.la
 
 libgcj_la_SOURCES =
@@ -254,8 +259,6 @@ libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \
        $(LIBLTDL) $(SYS_ZLIBS) \
        -version-info `grep -v '^\#' $(srcdir)/libtool-version`
 libgcj_la_LIBADD = \
-       external/sax/libsax_convenience.la \
-       external/w3c_dom/libw3c_convenience.la \
        libgcj0_convenience.la \
        $(LIBFFI) $(ZLIBS) $(GCLIBS) $(propertyo_files)
 libgcj_la_DEPENDENCIES = libgcj-$(gcc_version).jar \
@@ -515,7 +518,10 @@ all_java_source_files = \
     $(built_java_source_files) \
     $(gtk_awt_peer_sources) \
     $(xlib_java_source_files) \
-    $(gnu_xml_source_files)
+    $(gnu_xml_source_files) \
+    $(javax_imageio_source_files) \
+    $(javax_xml_source_files) \
+    $(gnu_java_beans_source_files)
 
 all_java_class_files = $(all_java_source_files:.java=.class)
 
@@ -610,7 +616,7 @@ SUFFIXES = .class .java .h .properties
 $(javao_files) $(xlib_javao_files): %.lo: %.java
        $(LTGCJCOMPILE) -o $@ -c $<
 
-$(gtk_awt_peer_sources:.java=.lo) $(gnu_xml_source_files:.java=.lo): %.lo: %.java
+$(gtk_awt_peer_sources:.java=.lo): %.lo: %.java
        $(LTGCJCOMPILE) -fjni -o $@ -c $<
 
 ## Pass the list of object files to libtool in a temporary file to
@@ -631,6 +637,58 @@ lib-gnu-awt-xlib.la: $(lib_gnu_awt_xlib_la_OBJECTS) $(lib_gnu_awt_xlib_la_DEPEND
 ## ################################################################
 
 ##
+## Some packages must be built with the binary compatibility ABI.  We
+## compile each such package into a .so, broken down more or less by
+## conceptual unit.
+##
+
+## Depend on the sources, even though we are going to compile the
+## classes.
+gnu-xml.lo: $(gnu_xml_source_files)
+## FIXME: this is ugly.  We want to make sure the .class files have
+## been built, but we don't want a real dependency on them as this
+## would cause our target to be rebuilt whenever any .java file is
+## touched.
+       $(MAKE) classes.stamp
+       $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o gnu-xml.lo \
+               `find gnu/xml -name '*.class' -print`
+
+## Depend on the sources, even though we are going to compile the
+## classes.
+javax-imageio.lo: $(javax_imageio_source_files)
+## FIXME: this is ugly.  We want to make sure the .class files have
+## been built, but we don't want a real dependency on them as this
+## would cause our target to be rebuilt whenever any .java file is
+## touched.
+       $(MAKE) classes.stamp
+       $(LTGCJCOMPILE) -findirect-dispatch -c -o javax-imageio.lo \
+               `find javax/imageio -name '*.class' -print`
+
+## Depend on the sources, even though we are going to compile the
+## classes.
+javax-xml.lo: $(javax_xml_source_files)
+## FIXME: this is ugly.  We want to make sure the .class files have
+## been built, but we don't want a real dependency on them as this
+## would cause our target to be rebuilt whenever any .java file is
+## touched.
+       $(MAKE) classes.stamp
+       $(LTGCJCOMPILE) -findirect-dispatch -c -o javax-xml.lo \
+               `find javax/xml -name '*.class' -print`
+
+## Depend on the sources, even though we are going to compile the
+## classes.
+gnu-java-beans.lo: $(gnu_java_beans_source_files)
+## FIXME: this is ugly.  We want to make sure the .class files have
+## been built, but we don't want a real dependency on them as this
+## would cause our target to be rebuilt whenever any .java file is
+## touched.
+       $(MAKE) classes.stamp
+       $(LTGCJCOMPILE) -findirect-dispatch -c -o gnu-java-beans.lo \
+               `find gnu/java/beans -name '*.class' -print`
+
+## ################################################################
+
+##
 ## How to build header files.
 ##
 
@@ -1054,40 +1112,7 @@ gnu/gcj/convert/UnicodeToBytes.java
 ## hand.
 special_java_source_files = java/lang/Class.java java/lang/Object.java
 
-awt_java_source_files =        \
-gnu/awt/LightweightRedirector.java \
-gnu/awt/j2d/AbstractGraphicsState.java \
-gnu/awt/j2d/DirectRasterGraphics.java \
-gnu/awt/j2d/Graphics2DImpl.java \
-gnu/awt/j2d/IntegerGraphicsState.java \
-gnu/awt/j2d/MappedRaster.java \
-gnu/java/awt/BitMaskExtent.java \
-gnu/java/awt/Buffers.java \
-gnu/java/awt/BitwiseXORComposite.java \
-gnu/java/awt/ComponentDataBlitOp.java \
-gnu/java/awt/ClasspathToolkit.java \
-gnu/java/awt/EmbeddedWindow.java \
-gnu/java/awt/EmbeddedWindowSupport.java \
-gnu/java/awt/EventModifier.java \
-gnu/java/awt/color/CieXyzConverter.java \
-gnu/java/awt/color/ClutProfileConverter.java \
-gnu/java/awt/color/ColorLookUpTable.java \
-gnu/java/awt/color/ColorSpaceConverter.java \
-gnu/java/awt/color/GrayProfileConverter.java \
-gnu/java/awt/color/GrayScaleConverter.java \
-gnu/java/awt/color/LinearRGBConverter.java \
-gnu/java/awt/color/ProfileHeader.java \
-gnu/java/awt/color/PyccConverter.java \
-gnu/java/awt/color/RgbProfileConverter.java \
-gnu/java/awt/color/SrgbConverter.java \
-gnu/java/awt/color/TagEntry.java \
-gnu/java/awt/color/ToneReproductionCurve.java \
-gnu/java/awt/image/ImageDecoder.java \
-gnu/java/awt/image/XBMDecoder.java \
-gnu/java/awt/peer/EmbeddedWindowPeer.java \
-gnu/java/awt/peer/GLightweightPeer.java \
-gnu/java/awt/peer/ClasspathFontPeer.java \
-gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
+gnu_java_beans_source_files = \
 gnu/java/beans/decoder/AbstractContext.java \
 gnu/java/beans/decoder/AbstractCreatableObjectContext.java \
 gnu/java/beans/decoder/AbstractElementHandler.java \
@@ -1139,7 +1164,42 @@ gnu/java/beans/BeanInfoEmbryo.java \
 gnu/java/beans/DummyAppletContext.java \
 gnu/java/beans/DummyAppletStub.java \
 gnu/java/beans/ExplicitBeanInfo.java \
-gnu/java/beans/IntrospectionIncubator.java \
+gnu/java/beans/IntrospectionIncubator.java
+
+awt_java_source_files =        \
+gnu/awt/LightweightRedirector.java \
+gnu/awt/j2d/AbstractGraphicsState.java \
+gnu/awt/j2d/DirectRasterGraphics.java \
+gnu/awt/j2d/Graphics2DImpl.java \
+gnu/awt/j2d/IntegerGraphicsState.java \
+gnu/awt/j2d/MappedRaster.java \
+gnu/java/awt/BitMaskExtent.java \
+gnu/java/awt/Buffers.java \
+gnu/java/awt/BitwiseXORComposite.java \
+gnu/java/awt/ComponentDataBlitOp.java \
+gnu/java/awt/ClasspathToolkit.java \
+gnu/java/awt/EmbeddedWindow.java \
+gnu/java/awt/EmbeddedWindowSupport.java \
+gnu/java/awt/EventModifier.java \
+gnu/java/awt/color/CieXyzConverter.java \
+gnu/java/awt/color/ClutProfileConverter.java \
+gnu/java/awt/color/ColorLookUpTable.java \
+gnu/java/awt/color/ColorSpaceConverter.java \
+gnu/java/awt/color/GrayProfileConverter.java \
+gnu/java/awt/color/GrayScaleConverter.java \
+gnu/java/awt/color/LinearRGBConverter.java \
+gnu/java/awt/color/ProfileHeader.java \
+gnu/java/awt/color/PyccConverter.java \
+gnu/java/awt/color/RgbProfileConverter.java \
+gnu/java/awt/color/SrgbConverter.java \
+gnu/java/awt/color/TagEntry.java \
+gnu/java/awt/color/ToneReproductionCurve.java \
+gnu/java/awt/image/ImageDecoder.java \
+gnu/java/awt/image/XBMDecoder.java \
+gnu/java/awt/peer/EmbeddedWindowPeer.java \
+gnu/java/awt/peer/GLightweightPeer.java \
+gnu/java/awt/peer/ClasspathFontPeer.java \
+gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
 java/applet/Applet.java \
 java/applet/AppletStub.java \
 java/applet/AppletContext.java \
@@ -1982,7 +2042,7 @@ gnu/java/rmi/server/UnicastRemoteStub.java \
 gnu/java/rmi/server/UnicastServer.java \
 gnu/java/rmi/server/UnicastServerRef.java
 
-javax_source_files = \
+javax_imageio_source_files = \
 javax/imageio/ImageWriteParam.java \
 javax/imageio/ImageReader.java \
 javax/imageio/ImageWriter.java \
@@ -2028,7 +2088,63 @@ javax/imageio/event/IIOWriteProgressListener.java \
 javax/imageio/ImageTranscoder.java \
 javax/imageio/ImageTypeSpecifier.java \
 javax/imageio/ImageIO.java \
-javax/imageio/IIOImage.java \
+javax/imageio/IIOImage.java
+
+javax_xml_source_files = \
+javax/xml/xpath/XPathConstants.java \
+javax/xml/xpath/XPathFunction.java \
+javax/xml/xpath/XPathVariableResolver.java \
+javax/xml/xpath/XPathExpressionException.java \
+javax/xml/xpath/XPathFunctionResolver.java \
+javax/xml/xpath/XPath.java \
+javax/xml/xpath/XPathFactoryConfigurationException.java        \
+javax/xml/xpath/XPathFactory.java \
+javax/xml/xpath/XPathException.java \
+javax/xml/xpath/XPathExpression.java \
+javax/xml/xpath/XPathFunctionException.java \
+javax/xml/validation/ValidatorHandler.java \
+javax/xml/validation/Validator.java \
+javax/xml/validation/TypeInfoProvider.java \
+javax/xml/validation/SchemaFactory.java        \
+javax/xml/validation/Schema.java \
+javax/xml/parsers/SAXParserFactory.java        \
+javax/xml/parsers/FactoryConfigurationError.java \
+javax/xml/parsers/SAXParser.java \
+javax/xml/parsers/DocumentBuilderFactory.java \
+javax/xml/parsers/ParserConfigurationException.java \
+javax/xml/parsers/DocumentBuilder.java \
+javax/xml/datatype/DatatypeFactory.java        \
+javax/xml/datatype/XMLGregorianCalendar.java \
+javax/xml/datatype/Duration.java \
+javax/xml/datatype/DatatypeConfigurationException.java \
+javax/xml/datatype/DatatypeConstants.java \
+javax/xml/XMLConstants.java \
+javax/xml/namespace/NamespaceContext.java \
+javax/xml/namespace/QName.java \
+javax/xml/transform/TransformerException.java \
+javax/xml/transform/TransformerFactoryConfigurationError.java \
+javax/xml/transform/sax/SAXResult.java \
+javax/xml/transform/sax/TransformerHandler.java        \
+javax/xml/transform/sax/SAXTransformerFactory.java \
+javax/xml/transform/sax/SAXSource.java \
+javax/xml/transform/sax/TemplatesHandler.java \
+javax/xml/transform/OutputKeys.java \
+javax/xml/transform/stream/StreamResult.java \
+javax/xml/transform/stream/StreamSource.java \
+javax/xml/transform/Source.java        \
+javax/xml/transform/SourceLocator.java \
+javax/xml/transform/ErrorListener.java \
+javax/xml/transform/TransformerConfigurationException.java \
+javax/xml/transform/Templates.java \
+javax/xml/transform/Result.java        \
+javax/xml/transform/URIResolver.java \
+javax/xml/transform/dom/DOMSource.java \
+javax/xml/transform/dom/DOMLocator.java        \
+javax/xml/transform/dom/DOMResult.java \
+javax/xml/transform/Transformer.java \
+javax/xml/transform/TransformerFactory.java
+
+javax_source_files = \
 javax/net/VanillaSocketFactory.java \
 javax/net/ssl/TrustManagerFactorySpi.java \
 javax/net/ssl/SSLKeyException.java \
@@ -2267,58 +2383,6 @@ javax/naming/NameClassPair.java  \
 javax/naming/RefAddr.java \
 javax/naming/CompositeName.java        \
 javax/naming/Name.java \
-javax/xml/xpath/XPathConstants.java \
-javax/xml/xpath/XPathFunction.java \
-javax/xml/xpath/XPathVariableResolver.java \
-javax/xml/xpath/XPathExpressionException.java \
-javax/xml/xpath/XPathFunctionResolver.java \
-javax/xml/xpath/XPath.java \
-javax/xml/xpath/XPathFactoryConfigurationException.java        \
-javax/xml/xpath/XPathFactory.java \
-javax/xml/xpath/XPathException.java \
-javax/xml/xpath/XPathExpression.java \
-javax/xml/xpath/XPathFunctionException.java \
-javax/xml/validation/ValidatorHandler.java \
-javax/xml/validation/Validator.java \
-javax/xml/validation/TypeInfoProvider.java \
-javax/xml/validation/SchemaFactory.java        \
-javax/xml/validation/Schema.java \
-javax/xml/parsers/SAXParserFactory.java        \
-javax/xml/parsers/FactoryConfigurationError.java \
-javax/xml/parsers/SAXParser.java \
-javax/xml/parsers/DocumentBuilderFactory.java \
-javax/xml/parsers/ParserConfigurationException.java \
-javax/xml/parsers/DocumentBuilder.java \
-javax/xml/datatype/DatatypeFactory.java        \
-javax/xml/datatype/XMLGregorianCalendar.java \
-javax/xml/datatype/Duration.java \
-javax/xml/datatype/DatatypeConfigurationException.java \
-javax/xml/datatype/DatatypeConstants.java \
-javax/xml/XMLConstants.java \
-javax/xml/namespace/NamespaceContext.java \
-javax/xml/namespace/QName.java \
-javax/xml/transform/TransformerException.java \
-javax/xml/transform/TransformerFactoryConfigurationError.java \
-javax/xml/transform/sax/SAXResult.java \
-javax/xml/transform/sax/TransformerHandler.java        \
-javax/xml/transform/sax/SAXTransformerFactory.java \
-javax/xml/transform/sax/SAXSource.java \
-javax/xml/transform/sax/TemplatesHandler.java \
-javax/xml/transform/OutputKeys.java \
-javax/xml/transform/stream/StreamResult.java \
-javax/xml/transform/stream/StreamSource.java \
-javax/xml/transform/Source.java        \
-javax/xml/transform/SourceLocator.java \
-javax/xml/transform/ErrorListener.java \
-javax/xml/transform/TransformerConfigurationException.java \
-javax/xml/transform/Templates.java \
-javax/xml/transform/Result.java        \
-javax/xml/transform/URIResolver.java \
-javax/xml/transform/dom/DOMSource.java \
-javax/xml/transform/dom/DOMLocator.java        \
-javax/xml/transform/dom/DOMResult.java \
-javax/xml/transform/Transformer.java \
-javax/xml/transform/TransformerFactory.java \
 javax/security/cert/CertificateNotYetValidException.java \
 javax/security/cert/Certificate.java \
 javax/security/cert/X509Certificate.java \
@@ -2919,6 +2983,7 @@ gnu/gcj/RawDataManaged.java \
 gnu/gcj/io/DefaultMimeTypes.java \
 gnu/gcj/io/MimeTypes.java \
 gnu/gcj/io/SimpleSHSStream.java        \
+gnu/gcj/runtime/BootClassLoader.java \
 gnu/gcj/runtime/FileDeleter.java \
 gnu/gcj/runtime/FinalizerThread.java \
 gnu/gcj/runtime/JNIWeakRef.java \
index c98a225..79f4ee9 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.3 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -324,7 +324,8 @@ am__DEPENDENCIES_2 = gnu/regexp/MessagesBundle.properties.lo \
 am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2)
 am_libgcj_la_OBJECTS =
 libgcj_la_OBJECTS = $(am_libgcj_la_OBJECTS)
-libgcj0_convenience_la_LIBADD =
+libgcj0_convenience_la_DEPENDENCIES = gnu-xml.lo javax-imageio.lo \
+       javax-xml.lo gnu-java-beans.lo
 am__libgcj0_convenience_la_SOURCES_DIST = prims.cc jni.cc exception.cc \
        stacktrace.cc link.cc defineclass.cc interpret.cc verify.cc \
        gnu/gcj/natCore.cc gnu/gcj/convert/JIS0208_to_Unicode.cc \
@@ -546,6 +547,7 @@ am__libgcj0_convenience_la_SOURCES_DIST = prims.cc jni.cc exception.cc \
        gnu/gcj/Core.java gnu/gcj/RawData.java \
        gnu/gcj/RawDataManaged.java gnu/gcj/io/DefaultMimeTypes.java \
        gnu/gcj/io/MimeTypes.java gnu/gcj/io/SimpleSHSStream.java \
+       gnu/gcj/runtime/BootClassLoader.java \
        gnu/gcj/runtime/FileDeleter.java \
        gnu/gcj/runtime/FinalizerThread.java \
        gnu/gcj/runtime/JNIWeakRef.java \
@@ -1306,58 +1308,6 @@ am__libgcj0_convenience_la_SOURCES_DIST = prims.cc jni.cc exception.cc \
        gnu/java/awt/peer/GLightweightPeer.java \
        gnu/java/awt/peer/ClasspathFontPeer.java \
        gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
-       gnu/java/beans/decoder/AbstractContext.java \
-       gnu/java/beans/decoder/AbstractCreatableObjectContext.java \
-       gnu/java/beans/decoder/AbstractElementHandler.java \
-       gnu/java/beans/decoder/AbstractObjectContext.java \
-       gnu/java/beans/decoder/ArrayContext.java \
-       gnu/java/beans/decoder/ArrayHandler.java \
-       gnu/java/beans/decoder/AssemblyException.java \
-       gnu/java/beans/decoder/BooleanHandler.java \
-       gnu/java/beans/decoder/ByteHandler.java \
-       gnu/java/beans/decoder/CharHandler.java \
-       gnu/java/beans/decoder/ClassHandler.java \
-       gnu/java/beans/decoder/ConstructorContext.java \
-       gnu/java/beans/decoder/Context.java \
-       gnu/java/beans/decoder/DecoderContext.java \
-       gnu/java/beans/decoder/DefaultExceptionListener.java \
-       gnu/java/beans/decoder/DoubleHandler.java \
-       gnu/java/beans/decoder/DummyContext.java \
-       gnu/java/beans/decoder/DummyHandler.java \
-       gnu/java/beans/decoder/ElementHandler.java \
-       gnu/java/beans/decoder/FloatHandler.java \
-       gnu/java/beans/decoder/GrowableArrayContext.java \
-       gnu/java/beans/decoder/IndexContext.java \
-       gnu/java/beans/decoder/IntHandler.java \
-       gnu/java/beans/decoder/JavaHandler.java \
-       gnu/java/beans/decoder/LongHandler.java \
-       gnu/java/beans/decoder/MethodContext.java \
-       gnu/java/beans/decoder/MethodFinder.java \
-       gnu/java/beans/decoder/NullHandler.java \
-       gnu/java/beans/decoder/ObjectContext.java \
-       gnu/java/beans/decoder/ObjectHandler.java \
-       gnu/java/beans/decoder/PersistenceParser.java \
-       gnu/java/beans/decoder/PropertyContext.java \
-       gnu/java/beans/decoder/ShortHandler.java \
-       gnu/java/beans/decoder/SimpleHandler.java \
-       gnu/java/beans/decoder/StaticMethodContext.java \
-       gnu/java/beans/decoder/StringHandler.java \
-       gnu/java/beans/decoder/VoidHandler.java \
-       gnu/java/beans/editors/ColorEditor.java \
-       gnu/java/beans/editors/FontEditor.java \
-       gnu/java/beans/editors/NativeBooleanEditor.java \
-       gnu/java/beans/editors/NativeByteEditor.java \
-       gnu/java/beans/editors/NativeDoubleEditor.java \
-       gnu/java/beans/editors/NativeFloatEditor.java \
-       gnu/java/beans/editors/NativeIntEditor.java \
-       gnu/java/beans/editors/NativeLongEditor.java \
-       gnu/java/beans/editors/NativeShortEditor.java \
-       gnu/java/beans/editors/StringEditor.java \
-       gnu/java/beans/BeanInfoEmbryo.java \
-       gnu/java/beans/DummyAppletContext.java \
-       gnu/java/beans/DummyAppletStub.java \
-       gnu/java/beans/ExplicitBeanInfo.java \
-       gnu/java/beans/IntrospectionIncubator.java \
        java/applet/Applet.java java/applet/AppletStub.java \
        java/applet/AppletContext.java java/applet/AudioClip.java \
        java/awt/AWTError.java java/awt/AWTEvent.java \
@@ -1989,49 +1939,6 @@ am__libgcj0_convenience_la_SOURCES_DIST = prims.cc jni.cc exception.cc \
        gnu/gcj/convert/Output_UTF8.java \
        gnu/gcj/convert/Output_iconv.java \
        gnu/gcj/convert/UnicodeToBytes.java \
-       javax/imageio/ImageWriteParam.java \
-       javax/imageio/ImageReader.java javax/imageio/ImageWriter.java \
-       javax/imageio/IIOException.java \
-       javax/imageio/IIOParamController.java \
-       javax/imageio/ImageReadParam.java javax/imageio/IIOParam.java \
-       javax/imageio/spi/IIORegistry.java \
-       javax/imageio/spi/ImageWriterSpi.java \
-       javax/imageio/spi/ImageOutputStreamSpi.java \
-       javax/imageio/spi/ServiceRegistry.java \
-       javax/imageio/spi/ImageTranscoderSpi.java \
-       javax/imageio/spi/ImageReaderSpi.java \
-       javax/imageio/spi/IIOServiceProvider.java \
-       javax/imageio/spi/ImageReaderWriterSpi.java \
-       javax/imageio/spi/ImageInputStreamSpi.java \
-       javax/imageio/spi/RegisterableService.java \
-       javax/imageio/metadata/IIOAttr.java \
-       javax/imageio/metadata/IIONamedNodeMap.java \
-       javax/imageio/metadata/IIONodeList.java \
-       javax/imageio/metadata/IIOMetadataFormatImpl.java \
-       javax/imageio/metadata/IIOInvalidTreeException.java \
-       javax/imageio/metadata/IIOMetadataFormat.java \
-       javax/imageio/metadata/IIOMetadataController.java \
-       javax/imageio/metadata/IIOMetadataNode.java \
-       javax/imageio/metadata/IIOMetadata.java \
-       javax/imageio/stream/FileImageOutputStream.java \
-       javax/imageio/stream/ImageInputStream.java \
-       javax/imageio/stream/IIOByteBuffer.java \
-       javax/imageio/stream/FileCacheImageInputStream.java \
-       javax/imageio/stream/ImageInputStreamImpl.java \
-       javax/imageio/stream/ImageOutputStreamImpl.java \
-       javax/imageio/stream/MemoryCacheImageInputStream.java \
-       javax/imageio/stream/FileCacheImageOutputStream.java \
-       javax/imageio/stream/ImageOutputStream.java \
-       javax/imageio/stream/MemoryCacheImageOutputStream.java \
-       javax/imageio/stream/FileImageInputStream.java \
-       javax/imageio/event/IIOReadProgressListener.java \
-       javax/imageio/event/IIOWriteWarningListener.java \
-       javax/imageio/event/IIOReadWarningListener.java \
-       javax/imageio/event/IIOReadUpdateListener.java \
-       javax/imageio/event/IIOWriteProgressListener.java \
-       javax/imageio/ImageTranscoder.java \
-       javax/imageio/ImageTypeSpecifier.java \
-       javax/imageio/ImageIO.java javax/imageio/IIOImage.java \
        javax/net/VanillaSocketFactory.java \
        javax/net/ssl/TrustManagerFactorySpi.java \
        javax/net/ssl/SSLKeyException.java \
@@ -2260,58 +2167,6 @@ am__libgcj0_convenience_la_SOURCES_DIST = prims.cc jni.cc exception.cc \
        javax/naming/Reference.java javax/naming/NameParser.java \
        javax/naming/NameClassPair.java javax/naming/RefAddr.java \
        javax/naming/CompositeName.java javax/naming/Name.java \
-       javax/xml/xpath/XPathConstants.java \
-       javax/xml/xpath/XPathFunction.java \
-       javax/xml/xpath/XPathVariableResolver.java \
-       javax/xml/xpath/XPathExpressionException.java \
-       javax/xml/xpath/XPathFunctionResolver.java \
-       javax/xml/xpath/XPath.java \
-       javax/xml/xpath/XPathFactoryConfigurationException.java \
-       javax/xml/xpath/XPathFactory.java \
-       javax/xml/xpath/XPathException.java \
-       javax/xml/xpath/XPathExpression.java \
-       javax/xml/xpath/XPathFunctionException.java \
-       javax/xml/validation/ValidatorHandler.java \
-       javax/xml/validation/Validator.java \
-       javax/xml/validation/TypeInfoProvider.java \
-       javax/xml/validation/SchemaFactory.java \
-       javax/xml/validation/Schema.java \
-       javax/xml/parsers/SAXParserFactory.java \
-       javax/xml/parsers/FactoryConfigurationError.java \
-       javax/xml/parsers/SAXParser.java \
-       javax/xml/parsers/DocumentBuilderFactory.java \
-       javax/xml/parsers/ParserConfigurationException.java \
-       javax/xml/parsers/DocumentBuilder.java \
-       javax/xml/datatype/DatatypeFactory.java \
-       javax/xml/datatype/XMLGregorianCalendar.java \
-       javax/xml/datatype/Duration.java \
-       javax/xml/datatype/DatatypeConfigurationException.java \
-       javax/xml/datatype/DatatypeConstants.java \
-       javax/xml/XMLConstants.java \
-       javax/xml/namespace/NamespaceContext.java \
-       javax/xml/namespace/QName.java \
-       javax/xml/transform/TransformerException.java \
-       javax/xml/transform/TransformerFactoryConfigurationError.java \
-       javax/xml/transform/sax/SAXResult.java \
-       javax/xml/transform/sax/TransformerHandler.java \
-       javax/xml/transform/sax/SAXTransformerFactory.java \
-       javax/xml/transform/sax/SAXSource.java \
-       javax/xml/transform/sax/TemplatesHandler.java \
-       javax/xml/transform/OutputKeys.java \
-       javax/xml/transform/stream/StreamResult.java \
-       javax/xml/transform/stream/StreamSource.java \
-       javax/xml/transform/Source.java \
-       javax/xml/transform/SourceLocator.java \
-       javax/xml/transform/ErrorListener.java \
-       javax/xml/transform/TransformerConfigurationException.java \
-       javax/xml/transform/Templates.java \
-       javax/xml/transform/Result.java \
-       javax/xml/transform/URIResolver.java \
-       javax/xml/transform/dom/DOMSource.java \
-       javax/xml/transform/dom/DOMLocator.java \
-       javax/xml/transform/dom/DOMResult.java \
-       javax/xml/transform/Transformer.java \
-       javax/xml/transform/TransformerFactory.java \
        javax/security/cert/CertificateNotYetValidException.java \
        javax/security/cert/Certificate.java \
        javax/security/cert/X509Certificate.java \
@@ -2448,151 +2303,6 @@ am__libgcj0_convenience_la_SOURCES_DIST = prims.cc jni.cc exception.cc \
        org/ietf/jgss/GSSName.java org/ietf/jgss/GSSContext.java \
        org/ietf/jgss/Oid.java org/ietf/jgss/GSSCredential.java \
        org/ietf/jgss/ChannelBinding.java \
-       gnu/xml/xpath/EqualityExpr.java \
-       gnu/xml/xpath/NumberFunction.java \
-       gnu/xml/xpath/StringLengthFunction.java \
-       gnu/xml/xpath/NameFunction.java gnu/xml/xpath/SumFunction.java \
-       gnu/xml/xpath/Pattern.java gnu/xml/xpath/StringFunction.java \
-       gnu/xml/xpath/NegativeExpr.java gnu/xml/xpath/UnionExpr.java \
-       gnu/xml/xpath/SubstringFunction.java gnu/xml/xpath/Expr.java \
-       gnu/xml/xpath/XPathFactoryImpl.java \
-       gnu/xml/xpath/NormalizeSpaceFunction.java \
-       gnu/xml/xpath/Constant.java gnu/xml/xpath/Predicate.java \
-       gnu/xml/xpath/Path.java gnu/xml/xpath/OrExpr.java \
-       gnu/xml/xpath/LangFunction.java \
-       gnu/xml/xpath/StartsWithFunction.java \
-       gnu/xml/xpath/SubstringAfterFunction.java \
-       gnu/xml/xpath/FloorFunction.java \
-       gnu/xml/xpath/NotFunction.java gnu/xml/xpath/Root.java \
-       gnu/xml/xpath/PositionFunction.java \
-       gnu/xml/xpath/VariableReference.java \
-       gnu/xml/xpath/DocumentOrderComparator.java \
-       gnu/xml/xpath/LocalNameFunction.java \
-       gnu/xml/xpath/NamespaceUriFunction.java \
-       gnu/xml/xpath/TranslateFunction.java \
-       gnu/xml/xpath/FalseFunction.java gnu/xml/xpath/AndExpr.java \
-       gnu/xml/xpath/XPathParser.java \
-       gnu/xml/xpath/NamespaceTest.java \
-       gnu/xml/xpath/ConcatFunction.java gnu/xml/xpath/NameTest.java \
-       gnu/xml/xpath/CountFunction.java gnu/xml/xpath/IdFunction.java \
-       gnu/xml/xpath/LastFunction.java \
-       gnu/xml/xpath/XPathTokenizer.java gnu/xml/xpath/Steps.java \
-       gnu/xml/xpath/TrueFunction.java \
-       gnu/xml/xpath/BooleanFunction.java \
-       gnu/xml/xpath/ParenthesizedExpr.java \
-       gnu/xml/xpath/XPathImpl.java gnu/xml/xpath/Selector.java \
-       gnu/xml/xpath/RoundFunction.java \
-       gnu/xml/xpath/SubstringBeforeFunction.java \
-       gnu/xml/xpath/Function.java gnu/xml/xpath/CeilingFunction.java \
-       gnu/xml/xpath/RelationalExpr.java \
-       gnu/xml/xpath/FunctionCall.java \
-       gnu/xml/xpath/NodeTypeTest.java \
-       gnu/xml/xpath/ArithmeticExpr.java gnu/xml/xpath/Test.java \
-       gnu/xml/xpath/ContainsFunction.java \
-       gnu/xml/pipeline/EventFilter.java \
-       gnu/xml/pipeline/NSFilter.java \
-       gnu/xml/pipeline/XsltFilter.java \
-       gnu/xml/pipeline/ValidationConsumer.java \
-       gnu/xml/pipeline/PipelineFactory.java \
-       gnu/xml/pipeline/TextConsumer.java \
-       gnu/xml/pipeline/LinkFilter.java \
-       gnu/xml/pipeline/TeeConsumer.java \
-       gnu/xml/pipeline/DomConsumer.java \
-       gnu/xml/pipeline/EventConsumer.java \
-       gnu/xml/pipeline/WellFormednessFilter.java \
-       gnu/xml/pipeline/XIncludeFilter.java \
-       gnu/xml/pipeline/CallFilter.java \
-       gnu/xml/aelfred2/XmlParser.java \
-       gnu/xml/aelfred2/XmlReader.java \
-       gnu/xml/aelfred2/JAXPFactory.java \
-       gnu/xml/aelfred2/ContentHandler2.java \
-       gnu/xml/aelfred2/SAXDriver.java gnu/xml/util/XCat.java \
-       gnu/xml/util/DomParser.java gnu/xml/util/XMLWriter.java \
-       gnu/xml/util/Resolver.java gnu/xml/util/DoParse.java \
-       gnu/xml/util/XHTMLWriter.java \
-       gnu/xml/util/SAXNullTransformerFactory.java \
-       gnu/xml/dom/DomXPathNSResolver.java \
-       gnu/xml/dom/ls/FilteredSAXEventSink.java \
-       gnu/xml/dom/ls/DomLSException.java \
-       gnu/xml/dom/ls/DomLSSerializer.java \
-       gnu/xml/dom/ls/DomLSInput.java gnu/xml/dom/ls/DomLSOutput.java \
-       gnu/xml/dom/ls/SAXEventSink.java \
-       gnu/xml/dom/ls/DomLSParser.java \
-       gnu/xml/dom/ls/ReaderInputStream.java \
-       gnu/xml/dom/ls/WriterOutputStream.java \
-       gnu/xml/dom/DomElement.java gnu/xml/dom/DomNsNode.java \
-       gnu/xml/dom/DomAttr.java gnu/xml/dom/DTDAttributeTypeInfo.java \
-       gnu/xml/dom/DomDocumentBuilder.java \
-       gnu/xml/dom/DTDElementTypeInfo.java \
-       gnu/xml/dom/DomDocument.java \
-       gnu/xml/dom/DomXPathExpression.java \
-       gnu/xml/dom/DomDocumentConfiguration.java \
-       gnu/xml/dom/DomDocumentFragment.java \
-       gnu/xml/dom/DomProcessingInstruction.java \
-       gnu/xml/dom/Consumer.java gnu/xml/dom/DomComment.java \
-       gnu/xml/dom/DomCharacterData.java gnu/xml/dom/DomExtern.java \
-       gnu/xml/dom/DomEntityReference.java \
-       gnu/xml/dom/DomNamedNodeMap.java \
-       gnu/xml/dom/ImplementationList.java \
-       gnu/xml/dom/ImplementationSource.java gnu/xml/dom/DomImpl.java \
-       gnu/xml/dom/DomDoctype.java gnu/xml/dom/DomNode.java \
-       gnu/xml/dom/DomXPathResult.java \
-       gnu/xml/dom/DomDocumentBuilderFactory.java \
-       gnu/xml/dom/DomText.java gnu/xml/dom/DomNSResolverContext.java \
-       gnu/xml/dom/DomNodeIterator.java gnu/xml/dom/DomNotation.java \
-       gnu/xml/dom/JAXPFactory.java gnu/xml/dom/DomIterator.java \
-       gnu/xml/dom/DomEvent.java gnu/xml/dom/DomEntity.java \
-       gnu/xml/dom/DomCDATASection.java \
-       gnu/xml/dom/DomDOMException.java \
-       gnu/xml/transform/GenerateIdFunction.java \
-       gnu/xml/transform/FormatNumberFunction.java \
-       gnu/xml/transform/ValueOfNode.java \
-       gnu/xml/transform/ApplyImportsNode.java \
-       gnu/xml/transform/WithParam.java \
-       gnu/xml/transform/DocumentFunction.java \
-       gnu/xml/transform/SAXSerializer.java \
-       gnu/xml/transform/FunctionAvailableFunction.java \
-       gnu/xml/transform/ElementAvailableFunction.java \
-       gnu/xml/transform/IfNode.java \
-       gnu/xml/transform/ApplyTemplatesNode.java \
-       gnu/xml/transform/SortKey.java gnu/xml/transform/Key.java \
-       gnu/xml/transform/ElementNode.java \
-       gnu/xml/transform/CurrentFunction.java \
-       gnu/xml/transform/XSLComparator.java \
-       gnu/xml/transform/CallTemplateNode.java \
-       gnu/xml/transform/TemplatesImpl.java \
-       gnu/xml/transform/ChooseNode.java \
-       gnu/xml/transform/NumberNode.java \
-       gnu/xml/transform/CopyOfNode.java \
-       gnu/xml/transform/ParameterNode.java \
-       gnu/xml/transform/TransformerFactoryImpl.java \
-       gnu/xml/transform/TextNode.java \
-       gnu/xml/transform/CopyNode.java \
-       gnu/xml/transform/SystemPropertyFunction.java \
-       gnu/xml/transform/Stylesheet.java \
-       gnu/xml/transform/ProcessingInstructionNode.java \
-       gnu/xml/transform/UnparsedEntityUriFunction.java \
-       gnu/xml/transform/URIResolverEntityResolver.java \
-       gnu/xml/transform/ErrorListenerErrorHandler.java \
-       gnu/xml/transform/Bindings.java \
-       gnu/xml/transform/AttributeSet.java \
-       gnu/xml/transform/Template.java \
-       gnu/xml/transform/MessageNode.java \
-       gnu/xml/transform/LiteralNode.java \
-       gnu/xml/transform/StreamSerializer.java \
-       gnu/xml/transform/XSLURIResolver.java \
-       gnu/xml/transform/AttributeNode.java \
-       gnu/xml/transform/CommentNode.java \
-       gnu/xml/transform/ForEachNode.java \
-       gnu/xml/transform/KeyFunction.java \
-       gnu/xml/transform/TransformerImpl.java \
-       gnu/xml/transform/WhenNode.java \
-       gnu/xml/transform/NodeNumberNode.java \
-       gnu/xml/transform/OtherwiseNode.java \
-       gnu/xml/transform/AbstractNumberNode.java \
-       gnu/xml/transform/TemplateNode.java \
-       gnu/xml/transform/TransformerOutputProperties.java \
-       gnu/xml/transform/DOMSourceLocator.java \
        java/lang/ConcreteProcess.java \
        gnu/classpath/Configuration.java boehm.cc nogc.cc \
        sysdep/dwarf2-backtrace.cc posix.cc win32.cc darwin.cc \
@@ -2908,67 +2618,16 @@ am__objects_11 = gnu/awt/LightweightRedirector.lo \
        gnu/java/awt/peer/GLightweightPeer.lo \
        gnu/java/awt/peer/ClasspathFontPeer.lo \
        gnu/java/awt/peer/ClasspathTextLayoutPeer.lo \
-       gnu/java/beans/decoder/AbstractContext.lo \
-       gnu/java/beans/decoder/AbstractCreatableObjectContext.lo \
-       gnu/java/beans/decoder/AbstractElementHandler.lo \
-       gnu/java/beans/decoder/AbstractObjectContext.lo \
-       gnu/java/beans/decoder/ArrayContext.lo \
-       gnu/java/beans/decoder/ArrayHandler.lo \
-       gnu/java/beans/decoder/AssemblyException.lo \
-       gnu/java/beans/decoder/BooleanHandler.lo \
-       gnu/java/beans/decoder/ByteHandler.lo \
-       gnu/java/beans/decoder/CharHandler.lo \
-       gnu/java/beans/decoder/ClassHandler.lo \
-       gnu/java/beans/decoder/ConstructorContext.lo \
-       gnu/java/beans/decoder/Context.lo \
-       gnu/java/beans/decoder/DecoderContext.lo \
-       gnu/java/beans/decoder/DefaultExceptionListener.lo \
-       gnu/java/beans/decoder/DoubleHandler.lo \
-       gnu/java/beans/decoder/DummyContext.lo \
-       gnu/java/beans/decoder/DummyHandler.lo \
-       gnu/java/beans/decoder/ElementHandler.lo \
-       gnu/java/beans/decoder/FloatHandler.lo \
-       gnu/java/beans/decoder/GrowableArrayContext.lo \
-       gnu/java/beans/decoder/IndexContext.lo \
-       gnu/java/beans/decoder/IntHandler.lo \
-       gnu/java/beans/decoder/JavaHandler.lo \
-       gnu/java/beans/decoder/LongHandler.lo \
-       gnu/java/beans/decoder/MethodContext.lo \
-       gnu/java/beans/decoder/MethodFinder.lo \
-       gnu/java/beans/decoder/NullHandler.lo \
-       gnu/java/beans/decoder/ObjectContext.lo \
-       gnu/java/beans/decoder/ObjectHandler.lo \
-       gnu/java/beans/decoder/PersistenceParser.lo \
-       gnu/java/beans/decoder/PropertyContext.lo \
-       gnu/java/beans/decoder/ShortHandler.lo \
-       gnu/java/beans/decoder/SimpleHandler.lo \
-       gnu/java/beans/decoder/StaticMethodContext.lo \
-       gnu/java/beans/decoder/StringHandler.lo \
-       gnu/java/beans/decoder/VoidHandler.lo \
-       gnu/java/beans/editors/ColorEditor.lo \
-       gnu/java/beans/editors/FontEditor.lo \
-       gnu/java/beans/editors/NativeBooleanEditor.lo \
-       gnu/java/beans/editors/NativeByteEditor.lo \
-       gnu/java/beans/editors/NativeDoubleEditor.lo \
-       gnu/java/beans/editors/NativeFloatEditor.lo \
-       gnu/java/beans/editors/NativeIntEditor.lo \
-       gnu/java/beans/editors/NativeLongEditor.lo \
-       gnu/java/beans/editors/NativeShortEditor.lo \
-       gnu/java/beans/editors/StringEditor.lo \
-       gnu/java/beans/BeanInfoEmbryo.lo \
-       gnu/java/beans/DummyAppletContext.lo \
-       gnu/java/beans/DummyAppletStub.lo \
-       gnu/java/beans/ExplicitBeanInfo.lo \
-       gnu/java/beans/IntrospectionIncubator.lo java/applet/Applet.lo \
-       java/applet/AppletStub.lo java/applet/AppletContext.lo \
-       java/applet/AudioClip.lo java/awt/AWTError.lo \
-       java/awt/AWTEvent.lo java/awt/AWTEventMulticaster.lo \
-       java/awt/AWTException.lo java/awt/AWTPermission.lo \
-       java/awt/ActiveEvent.lo java/awt/Adjustable.lo \
-       java/awt/BorderLayout.lo java/awt/Button.lo java/awt/Canvas.lo \
-       java/awt/CardLayout.lo java/awt/Checkbox.lo \
-       java/awt/CheckboxGroup.lo java/awt/CheckboxMenuItem.lo \
-       java/awt/Choice.lo java/awt/Color.lo java/awt/Component.lo \
+       java/applet/Applet.lo java/applet/AppletStub.lo \
+       java/applet/AppletContext.lo java/applet/AudioClip.lo \
+       java/awt/AWTError.lo java/awt/AWTEvent.lo \
+       java/awt/AWTEventMulticaster.lo java/awt/AWTException.lo \
+       java/awt/AWTPermission.lo java/awt/ActiveEvent.lo \
+       java/awt/Adjustable.lo java/awt/BorderLayout.lo \
+       java/awt/Button.lo java/awt/Canvas.lo java/awt/CardLayout.lo \
+       java/awt/Checkbox.lo java/awt/CheckboxGroup.lo \
+       java/awt/CheckboxMenuItem.lo java/awt/Choice.lo \
+       java/awt/Color.lo java/awt/Component.lo \
        java/awt/ComponentOrientation.lo java/awt/Container.lo \
        java/awt/Cursor.lo java/awt/Dialog.lo java/awt/Dimension.lo \
        java/awt/Event.lo java/awt/EventDispatchThread.lo \
@@ -3536,49 +3195,7 @@ am__objects_12 = gnu/gcj/convert/BytesToUnicode.lo \
        gnu/gcj/convert/Output_UnicodeLittleUnmarked.lo \
        gnu/gcj/convert/Output_UTF8.lo gnu/gcj/convert/Output_iconv.lo \
        gnu/gcj/convert/UnicodeToBytes.lo
-am__objects_13 = javax/imageio/ImageWriteParam.lo \
-       javax/imageio/ImageReader.lo javax/imageio/ImageWriter.lo \
-       javax/imageio/IIOException.lo \
-       javax/imageio/IIOParamController.lo \
-       javax/imageio/ImageReadParam.lo javax/imageio/IIOParam.lo \
-       javax/imageio/spi/IIORegistry.lo \
-       javax/imageio/spi/ImageWriterSpi.lo \
-       javax/imageio/spi/ImageOutputStreamSpi.lo \
-       javax/imageio/spi/ServiceRegistry.lo \
-       javax/imageio/spi/ImageTranscoderSpi.lo \
-       javax/imageio/spi/ImageReaderSpi.lo \
-       javax/imageio/spi/IIOServiceProvider.lo \
-       javax/imageio/spi/ImageReaderWriterSpi.lo \
-       javax/imageio/spi/ImageInputStreamSpi.lo \
-       javax/imageio/spi/RegisterableService.lo \
-       javax/imageio/metadata/IIOAttr.lo \
-       javax/imageio/metadata/IIONamedNodeMap.lo \
-       javax/imageio/metadata/IIONodeList.lo \
-       javax/imageio/metadata/IIOMetadataFormatImpl.lo \
-       javax/imageio/metadata/IIOInvalidTreeException.lo \
-       javax/imageio/metadata/IIOMetadataFormat.lo \
-       javax/imageio/metadata/IIOMetadataController.lo \
-       javax/imageio/metadata/IIOMetadataNode.lo \
-       javax/imageio/metadata/IIOMetadata.lo \
-       javax/imageio/stream/FileImageOutputStream.lo \
-       javax/imageio/stream/ImageInputStream.lo \
-       javax/imageio/stream/IIOByteBuffer.lo \
-       javax/imageio/stream/FileCacheImageInputStream.lo \
-       javax/imageio/stream/ImageInputStreamImpl.lo \
-       javax/imageio/stream/ImageOutputStreamImpl.lo \
-       javax/imageio/stream/MemoryCacheImageInputStream.lo \
-       javax/imageio/stream/FileCacheImageOutputStream.lo \
-       javax/imageio/stream/ImageOutputStream.lo \
-       javax/imageio/stream/MemoryCacheImageOutputStream.lo \
-       javax/imageio/stream/FileImageInputStream.lo \
-       javax/imageio/event/IIOReadProgressListener.lo \
-       javax/imageio/event/IIOWriteWarningListener.lo \
-       javax/imageio/event/IIOReadWarningListener.lo \
-       javax/imageio/event/IIOReadUpdateListener.lo \
-       javax/imageio/event/IIOWriteProgressListener.lo \
-       javax/imageio/ImageTranscoder.lo \
-       javax/imageio/ImageTypeSpecifier.lo javax/imageio/ImageIO.lo \
-       javax/imageio/IIOImage.lo javax/net/VanillaSocketFactory.lo \
+am__objects_13 = javax/net/VanillaSocketFactory.lo \
        javax/net/ssl/TrustManagerFactorySpi.lo \
        javax/net/ssl/SSLKeyException.lo javax/net/ssl/TrustManager.lo \
        javax/net/ssl/SSLServerSocket.lo \
@@ -3798,57 +3415,6 @@ am__objects_13 = javax/imageio/ImageWriteParam.lo \
        javax/naming/Reference.lo javax/naming/NameParser.lo \
        javax/naming/NameClassPair.lo javax/naming/RefAddr.lo \
        javax/naming/CompositeName.lo javax/naming/Name.lo \
-       javax/xml/xpath/XPathConstants.lo \
-       javax/xml/xpath/XPathFunction.lo \
-       javax/xml/xpath/XPathVariableResolver.lo \
-       javax/xml/xpath/XPathExpressionException.lo \
-       javax/xml/xpath/XPathFunctionResolver.lo \
-       javax/xml/xpath/XPath.lo \
-       javax/xml/xpath/XPathFactoryConfigurationException.lo \
-       javax/xml/xpath/XPathFactory.lo \
-       javax/xml/xpath/XPathException.lo \
-       javax/xml/xpath/XPathExpression.lo \
-       javax/xml/xpath/XPathFunctionException.lo \
-       javax/xml/validation/ValidatorHandler.lo \
-       javax/xml/validation/Validator.lo \
-       javax/xml/validation/TypeInfoProvider.lo \
-       javax/xml/validation/SchemaFactory.lo \
-       javax/xml/validation/Schema.lo \
-       javax/xml/parsers/SAXParserFactory.lo \
-       javax/xml/parsers/FactoryConfigurationError.lo \
-       javax/xml/parsers/SAXParser.lo \
-       javax/xml/parsers/DocumentBuilderFactory.lo \
-       javax/xml/parsers/ParserConfigurationException.lo \
-       javax/xml/parsers/DocumentBuilder.lo \
-       javax/xml/datatype/DatatypeFactory.lo \
-       javax/xml/datatype/XMLGregorianCalendar.lo \
-       javax/xml/datatype/Duration.lo \
-       javax/xml/datatype/DatatypeConfigurationException.lo \
-       javax/xml/datatype/DatatypeConstants.lo \
-       javax/xml/XMLConstants.lo \
-       javax/xml/namespace/NamespaceContext.lo \
-       javax/xml/namespace/QName.lo \
-       javax/xml/transform/TransformerException.lo \
-       javax/xml/transform/TransformerFactoryConfigurationError.lo \
-       javax/xml/transform/sax/SAXResult.lo \
-       javax/xml/transform/sax/TransformerHandler.lo \
-       javax/xml/transform/sax/SAXTransformerFactory.lo \
-       javax/xml/transform/sax/SAXSource.lo \
-       javax/xml/transform/sax/TemplatesHandler.lo \
-       javax/xml/transform/OutputKeys.lo \
-       javax/xml/transform/stream/StreamResult.lo \
-       javax/xml/transform/stream/StreamSource.lo \
-       javax/xml/transform/Source.lo \
-       javax/xml/transform/SourceLocator.lo \
-       javax/xml/transform/ErrorListener.lo \
-       javax/xml/transform/TransformerConfigurationException.lo \
-       javax/xml/transform/Templates.lo javax/xml/transform/Result.lo \
-       javax/xml/transform/URIResolver.lo \
-       javax/xml/transform/dom/DOMSource.lo \
-       javax/xml/transform/dom/DOMLocator.lo \
-       javax/xml/transform/dom/DOMResult.lo \
-       javax/xml/transform/Transformer.lo \
-       javax/xml/transform/TransformerFactory.lo \
        javax/security/cert/CertificateNotYetValidException.lo \
        javax/security/cert/Certificate.lo \
        javax/security/cert/X509Certificate.lo \
@@ -3984,7 +3550,9 @@ am__objects_15 = $(am__objects_9) gnu/classpath/ServiceFactory.lo \
        gnu/classpath/ServiceProviderLoadingAction.lo gnu/gcj/Core.lo \
        gnu/gcj/RawData.lo gnu/gcj/RawDataManaged.lo \
        gnu/gcj/io/DefaultMimeTypes.lo gnu/gcj/io/MimeTypes.lo \
-       gnu/gcj/io/SimpleSHSStream.lo gnu/gcj/runtime/FileDeleter.lo \
+       gnu/gcj/io/SimpleSHSStream.lo \
+       gnu/gcj/runtime/BootClassLoader.lo \
+       gnu/gcj/runtime/FileDeleter.lo \
        gnu/gcj/runtime/FinalizerThread.lo \
        gnu/gcj/runtime/JNIWeakRef.lo gnu/gcj/runtime/NameFinder.lo \
        gnu/gcj/runtime/PersistentByteMap.lo \
@@ -4592,155 +4160,25 @@ am__objects_15 = $(am__objects_9) gnu/classpath/ServiceFactory.lo \
        $(am__objects_11) $(am__objects_12) $(am__objects_13) \
        $(am__objects_14)
 am__objects_16 = $(am__objects_8) $(am__objects_15)
-am__objects_17 = gnu/xml/xpath/EqualityExpr.lo \
-       gnu/xml/xpath/NumberFunction.lo \
-       gnu/xml/xpath/StringLengthFunction.lo \
-       gnu/xml/xpath/NameFunction.lo gnu/xml/xpath/SumFunction.lo \
-       gnu/xml/xpath/Pattern.lo gnu/xml/xpath/StringFunction.lo \
-       gnu/xml/xpath/NegativeExpr.lo gnu/xml/xpath/UnionExpr.lo \
-       gnu/xml/xpath/SubstringFunction.lo gnu/xml/xpath/Expr.lo \
-       gnu/xml/xpath/XPathFactoryImpl.lo \
-       gnu/xml/xpath/NormalizeSpaceFunction.lo \
-       gnu/xml/xpath/Constant.lo gnu/xml/xpath/Predicate.lo \
-       gnu/xml/xpath/Path.lo gnu/xml/xpath/OrExpr.lo \
-       gnu/xml/xpath/LangFunction.lo \
-       gnu/xml/xpath/StartsWithFunction.lo \
-       gnu/xml/xpath/SubstringAfterFunction.lo \
-       gnu/xml/xpath/FloorFunction.lo gnu/xml/xpath/NotFunction.lo \
-       gnu/xml/xpath/Root.lo gnu/xml/xpath/PositionFunction.lo \
-       gnu/xml/xpath/VariableReference.lo \
-       gnu/xml/xpath/DocumentOrderComparator.lo \
-       gnu/xml/xpath/LocalNameFunction.lo \
-       gnu/xml/xpath/NamespaceUriFunction.lo \
-       gnu/xml/xpath/TranslateFunction.lo \
-       gnu/xml/xpath/FalseFunction.lo gnu/xml/xpath/AndExpr.lo \
-       gnu/xml/xpath/XPathParser.lo gnu/xml/xpath/NamespaceTest.lo \
-       gnu/xml/xpath/ConcatFunction.lo gnu/xml/xpath/NameTest.lo \
-       gnu/xml/xpath/CountFunction.lo gnu/xml/xpath/IdFunction.lo \
-       gnu/xml/xpath/LastFunction.lo gnu/xml/xpath/XPathTokenizer.lo \
-       gnu/xml/xpath/Steps.lo gnu/xml/xpath/TrueFunction.lo \
-       gnu/xml/xpath/BooleanFunction.lo \
-       gnu/xml/xpath/ParenthesizedExpr.lo gnu/xml/xpath/XPathImpl.lo \
-       gnu/xml/xpath/Selector.lo gnu/xml/xpath/RoundFunction.lo \
-       gnu/xml/xpath/SubstringBeforeFunction.lo \
-       gnu/xml/xpath/Function.lo gnu/xml/xpath/CeilingFunction.lo \
-       gnu/xml/xpath/RelationalExpr.lo gnu/xml/xpath/FunctionCall.lo \
-       gnu/xml/xpath/NodeTypeTest.lo gnu/xml/xpath/ArithmeticExpr.lo \
-       gnu/xml/xpath/Test.lo gnu/xml/xpath/ContainsFunction.lo \
-       gnu/xml/pipeline/EventFilter.lo gnu/xml/pipeline/NSFilter.lo \
-       gnu/xml/pipeline/XsltFilter.lo \
-       gnu/xml/pipeline/ValidationConsumer.lo \
-       gnu/xml/pipeline/PipelineFactory.lo \
-       gnu/xml/pipeline/TextConsumer.lo \
-       gnu/xml/pipeline/LinkFilter.lo gnu/xml/pipeline/TeeConsumer.lo \
-       gnu/xml/pipeline/DomConsumer.lo \
-       gnu/xml/pipeline/EventConsumer.lo \
-       gnu/xml/pipeline/WellFormednessFilter.lo \
-       gnu/xml/pipeline/XIncludeFilter.lo \
-       gnu/xml/pipeline/CallFilter.lo gnu/xml/aelfred2/XmlParser.lo \
-       gnu/xml/aelfred2/XmlReader.lo gnu/xml/aelfred2/JAXPFactory.lo \
-       gnu/xml/aelfred2/ContentHandler2.lo \
-       gnu/xml/aelfred2/SAXDriver.lo gnu/xml/util/XCat.lo \
-       gnu/xml/util/DomParser.lo gnu/xml/util/XMLWriter.lo \
-       gnu/xml/util/Resolver.lo gnu/xml/util/DoParse.lo \
-       gnu/xml/util/XHTMLWriter.lo \
-       gnu/xml/util/SAXNullTransformerFactory.lo \
-       gnu/xml/dom/DomXPathNSResolver.lo \
-       gnu/xml/dom/ls/FilteredSAXEventSink.lo \
-       gnu/xml/dom/ls/DomLSException.lo \
-       gnu/xml/dom/ls/DomLSSerializer.lo gnu/xml/dom/ls/DomLSInput.lo \
-       gnu/xml/dom/ls/DomLSOutput.lo gnu/xml/dom/ls/SAXEventSink.lo \
-       gnu/xml/dom/ls/DomLSParser.lo \
-       gnu/xml/dom/ls/ReaderInputStream.lo \
-       gnu/xml/dom/ls/WriterOutputStream.lo gnu/xml/dom/DomElement.lo \
-       gnu/xml/dom/DomNsNode.lo gnu/xml/dom/DomAttr.lo \
-       gnu/xml/dom/DTDAttributeTypeInfo.lo \
-       gnu/xml/dom/DomDocumentBuilder.lo \
-       gnu/xml/dom/DTDElementTypeInfo.lo gnu/xml/dom/DomDocument.lo \
-       gnu/xml/dom/DomXPathExpression.lo \
-       gnu/xml/dom/DomDocumentConfiguration.lo \
-       gnu/xml/dom/DomDocumentFragment.lo \
-       gnu/xml/dom/DomProcessingInstruction.lo \
-       gnu/xml/dom/Consumer.lo gnu/xml/dom/DomComment.lo \
-       gnu/xml/dom/DomCharacterData.lo gnu/xml/dom/DomExtern.lo \
-       gnu/xml/dom/DomEntityReference.lo \
-       gnu/xml/dom/DomNamedNodeMap.lo \
-       gnu/xml/dom/ImplementationList.lo \
-       gnu/xml/dom/ImplementationSource.lo gnu/xml/dom/DomImpl.lo \
-       gnu/xml/dom/DomDoctype.lo gnu/xml/dom/DomNode.lo \
-       gnu/xml/dom/DomXPathResult.lo \
-       gnu/xml/dom/DomDocumentBuilderFactory.lo \
-       gnu/xml/dom/DomText.lo gnu/xml/dom/DomNSResolverContext.lo \
-       gnu/xml/dom/DomNodeIterator.lo gnu/xml/dom/DomNotation.lo \
-       gnu/xml/dom/JAXPFactory.lo gnu/xml/dom/DomIterator.lo \
-       gnu/xml/dom/DomEvent.lo gnu/xml/dom/DomEntity.lo \
-       gnu/xml/dom/DomCDATASection.lo gnu/xml/dom/DomDOMException.lo \
-       gnu/xml/transform/GenerateIdFunction.lo \
-       gnu/xml/transform/FormatNumberFunction.lo \
-       gnu/xml/transform/ValueOfNode.lo \
-       gnu/xml/transform/ApplyImportsNode.lo \
-       gnu/xml/transform/WithParam.lo \
-       gnu/xml/transform/DocumentFunction.lo \
-       gnu/xml/transform/SAXSerializer.lo \
-       gnu/xml/transform/FunctionAvailableFunction.lo \
-       gnu/xml/transform/ElementAvailableFunction.lo \
-       gnu/xml/transform/IfNode.lo \
-       gnu/xml/transform/ApplyTemplatesNode.lo \
-       gnu/xml/transform/SortKey.lo gnu/xml/transform/Key.lo \
-       gnu/xml/transform/ElementNode.lo \
-       gnu/xml/transform/CurrentFunction.lo \
-       gnu/xml/transform/XSLComparator.lo \
-       gnu/xml/transform/CallTemplateNode.lo \
-       gnu/xml/transform/TemplatesImpl.lo \
-       gnu/xml/transform/ChooseNode.lo \
-       gnu/xml/transform/NumberNode.lo \
-       gnu/xml/transform/CopyOfNode.lo \
-       gnu/xml/transform/ParameterNode.lo \
-       gnu/xml/transform/TransformerFactoryImpl.lo \
-       gnu/xml/transform/TextNode.lo gnu/xml/transform/CopyNode.lo \
-       gnu/xml/transform/SystemPropertyFunction.lo \
-       gnu/xml/transform/Stylesheet.lo \
-       gnu/xml/transform/ProcessingInstructionNode.lo \
-       gnu/xml/transform/UnparsedEntityUriFunction.lo \
-       gnu/xml/transform/URIResolverEntityResolver.lo \
-       gnu/xml/transform/ErrorListenerErrorHandler.lo \
-       gnu/xml/transform/Bindings.lo \
-       gnu/xml/transform/AttributeSet.lo \
-       gnu/xml/transform/Template.lo gnu/xml/transform/MessageNode.lo \
-       gnu/xml/transform/LiteralNode.lo \
-       gnu/xml/transform/StreamSerializer.lo \
-       gnu/xml/transform/XSLURIResolver.lo \
-       gnu/xml/transform/AttributeNode.lo \
-       gnu/xml/transform/CommentNode.lo \
-       gnu/xml/transform/ForEachNode.lo \
-       gnu/xml/transform/KeyFunction.lo \
-       gnu/xml/transform/TransformerImpl.lo \
-       gnu/xml/transform/WhenNode.lo \
-       gnu/xml/transform/NodeNumberNode.lo \
-       gnu/xml/transform/OtherwiseNode.lo \
-       gnu/xml/transform/AbstractNumberNode.lo \
-       gnu/xml/transform/TemplateNode.lo \
-       gnu/xml/transform/TransformerOutputProperties.lo \
-       gnu/xml/transform/DOMSourceLocator.lo
-am__objects_18 = java/lang/ConcreteProcess.lo \
+am__objects_17 = java/lang/ConcreteProcess.lo \
        gnu/classpath/Configuration.lo
-@USING_BOEHMGC_TRUE@am__objects_19 = boehm.lo
-@USING_NOGC_TRUE@am__objects_20 = nogc.lo
-@SUPPLY_BACKTRACE_TRUE@am__objects_21 = sysdep/dwarf2-backtrace.lo
-@USING_POSIX_PLATFORM_TRUE@am__objects_22 = posix.lo
-@USING_WIN32_PLATFORM_TRUE@am__objects_23 = win32.lo
-@USING_ECOS_PLATFORM_TRUE@am__objects_24 = posix.lo
-@USING_DARWIN_CRT_TRUE@am__objects_25 = darwin.lo
-@USING_POSIX_THREADS_TRUE@am__objects_26 = posix-threads.lo
-@USING_WIN32_THREADS_TRUE@am__objects_27 = win32-threads.lo
-@USING_NO_THREADS_TRUE@am__objects_28 = no-threads.lo
+@USING_BOEHMGC_TRUE@am__objects_18 = boehm.lo
+@USING_NOGC_TRUE@am__objects_19 = nogc.lo
+@SUPPLY_BACKTRACE_TRUE@am__objects_20 = sysdep/dwarf2-backtrace.lo
+@USING_POSIX_PLATFORM_TRUE@am__objects_21 = posix.lo
+@USING_WIN32_PLATFORM_TRUE@am__objects_22 = win32.lo
+@USING_ECOS_PLATFORM_TRUE@am__objects_23 = posix.lo
+@USING_DARWIN_CRT_TRUE@am__objects_24 = darwin.lo
+@USING_POSIX_THREADS_TRUE@am__objects_25 = posix-threads.lo
+@USING_WIN32_THREADS_TRUE@am__objects_26 = win32-threads.lo
+@USING_NO_THREADS_TRUE@am__objects_27 = no-threads.lo
 am_libgcj0_convenience_la_OBJECTS = prims.lo jni.lo exception.lo \
        stacktrace.lo link.lo defineclass.lo interpret.lo verify.lo \
        $(am__objects_6) $(am__objects_7) $(am__objects_16) \
        $(am__objects_17) $(am__objects_18) $(am__objects_19) \
        $(am__objects_20) $(am__objects_21) $(am__objects_22) \
        $(am__objects_23) $(am__objects_24) $(am__objects_25) \
-       $(am__objects_26) $(am__objects_27) $(am__objects_28)
+       $(am__objects_26) $(am__objects_27)
 libgcj0_convenience_la_OBJECTS = $(am_libgcj0_convenience_la_OBJECTS)
 am_libgij_la_OBJECTS = gij.lo
 libgij_la_OBJECTS = $(am_libgij_la_OBJECTS)
@@ -5128,7 +4566,8 @@ AM_CXXFLAGS = \
        -DLIBDIR="\"$(libdir)\"" \
        -DBOOT_CLASS_PATH="\"$(jardir)/$(jar_DATA)\"" \
        -DJAVA_EXT_DIRS="\"$(jardir)/ext\"" \
-       -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\""
+       -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \
+       -DTOOLEXECLIBDIR="\"$(toolexeclibdir)\""
 
 AM_GCJFLAGS = \
        @LIBGCJ_JAVAFLAGS@ \
@@ -5160,13 +4599,17 @@ libgij_la_LDFLAGS = -rpath $(toolexeclibdir) \
 libgcj0_convenience_la_SOURCES = prims.cc jni.cc exception.cc stacktrace.cc \
        link.cc defineclass.cc interpret.cc verify.cc \
        $(nat_source_files) $(math_c_source_files) $(java_source_files) \
-       $(gnu_xml_source_files) $(built_java_source_files) \
+       $(built_java_source_files) \
        $(BOEHMGC_SRC) $(NOGC_SRC) \
        $(BACKTRACE_SRC) \
        $(POSIX_PLATFORM_SRC) $(WIN32_PLATFORM_SRC) $(ECOS_PLATFORM_SRC) \
        $(DARWIN_CRT_SRC) \
        $(POSIX_THREAD_SRC) $(WIN32_THREAD_SRC) $(NO_THREAD_SRC)
 
+libgcj0_convenience_la_LIBADD = \
+       gnu-xml.lo javax-imageio.lo \
+       javax-xml.lo gnu-java-beans.lo
+
 noinst_LTLIBRARIES = libgcj0_convenience.la
 libgcj_la_SOURCES = 
 nat_files = $(nat_source_files:.cc=.lo)
@@ -5179,8 +4622,6 @@ libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \
        -version-info `grep -v '^\#' $(srcdir)/libtool-version`
 
 libgcj_la_LIBADD = \
-       external/sax/libsax_convenience.la \
-       external/w3c_dom/libw3c_convenience.la \
        libgcj0_convenience.la \
        $(LIBFFI) $(ZLIBS) $(GCLIBS) $(propertyo_files)
 
@@ -5335,7 +4776,10 @@ all_java_source_files = \
     $(built_java_source_files) \
     $(gtk_awt_peer_sources) \
     $(xlib_java_source_files) \
-    $(gnu_xml_source_files)
+    $(gnu_xml_source_files) \
+    $(javax_imageio_source_files) \
+    $(javax_xml_source_files) \
+    $(gnu_java_beans_source_files)
 
 all_java_class_files = $(all_java_source_files:.java=.class)
 all_property_files = $(property_files) \
@@ -5437,40 +4881,7 @@ gnu/gcj/convert/Output_iconv.java \
 gnu/gcj/convert/UnicodeToBytes.java
 
 special_java_source_files = java/lang/Class.java java/lang/Object.java
-awt_java_source_files = \
-gnu/awt/LightweightRedirector.java \
-gnu/awt/j2d/AbstractGraphicsState.java \
-gnu/awt/j2d/DirectRasterGraphics.java \
-gnu/awt/j2d/Graphics2DImpl.java \
-gnu/awt/j2d/IntegerGraphicsState.java \
-gnu/awt/j2d/MappedRaster.java \
-gnu/java/awt/BitMaskExtent.java \
-gnu/java/awt/Buffers.java \
-gnu/java/awt/BitwiseXORComposite.java \
-gnu/java/awt/ComponentDataBlitOp.java \
-gnu/java/awt/ClasspathToolkit.java \
-gnu/java/awt/EmbeddedWindow.java \
-gnu/java/awt/EmbeddedWindowSupport.java \
-gnu/java/awt/EventModifier.java \
-gnu/java/awt/color/CieXyzConverter.java \
-gnu/java/awt/color/ClutProfileConverter.java \
-gnu/java/awt/color/ColorLookUpTable.java \
-gnu/java/awt/color/ColorSpaceConverter.java \
-gnu/java/awt/color/GrayProfileConverter.java \
-gnu/java/awt/color/GrayScaleConverter.java \
-gnu/java/awt/color/LinearRGBConverter.java \
-gnu/java/awt/color/ProfileHeader.java \
-gnu/java/awt/color/PyccConverter.java \
-gnu/java/awt/color/RgbProfileConverter.java \
-gnu/java/awt/color/SrgbConverter.java \
-gnu/java/awt/color/TagEntry.java \
-gnu/java/awt/color/ToneReproductionCurve.java \
-gnu/java/awt/image/ImageDecoder.java \
-gnu/java/awt/image/XBMDecoder.java \
-gnu/java/awt/peer/EmbeddedWindowPeer.java \
-gnu/java/awt/peer/GLightweightPeer.java \
-gnu/java/awt/peer/ClasspathFontPeer.java \
-gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
+gnu_java_beans_source_files = \
 gnu/java/beans/decoder/AbstractContext.java \
 gnu/java/beans/decoder/AbstractCreatableObjectContext.java \
 gnu/java/beans/decoder/AbstractElementHandler.java \
@@ -5522,7 +4933,42 @@ gnu/java/beans/BeanInfoEmbryo.java \
 gnu/java/beans/DummyAppletContext.java \
 gnu/java/beans/DummyAppletStub.java \
 gnu/java/beans/ExplicitBeanInfo.java \
-gnu/java/beans/IntrospectionIncubator.java \
+gnu/java/beans/IntrospectionIncubator.java
+
+awt_java_source_files = \
+gnu/awt/LightweightRedirector.java \
+gnu/awt/j2d/AbstractGraphicsState.java \
+gnu/awt/j2d/DirectRasterGraphics.java \
+gnu/awt/j2d/Graphics2DImpl.java \
+gnu/awt/j2d/IntegerGraphicsState.java \
+gnu/awt/j2d/MappedRaster.java \
+gnu/java/awt/BitMaskExtent.java \
+gnu/java/awt/Buffers.java \
+gnu/java/awt/BitwiseXORComposite.java \
+gnu/java/awt/ComponentDataBlitOp.java \
+gnu/java/awt/ClasspathToolkit.java \
+gnu/java/awt/EmbeddedWindow.java \
+gnu/java/awt/EmbeddedWindowSupport.java \
+gnu/java/awt/EventModifier.java \
+gnu/java/awt/color/CieXyzConverter.java \
+gnu/java/awt/color/ClutProfileConverter.java \
+gnu/java/awt/color/ColorLookUpTable.java \
+gnu/java/awt/color/ColorSpaceConverter.java \
+gnu/java/awt/color/GrayProfileConverter.java \
+gnu/java/awt/color/GrayScaleConverter.java \
+gnu/java/awt/color/LinearRGBConverter.java \
+gnu/java/awt/color/ProfileHeader.java \
+gnu/java/awt/color/PyccConverter.java \
+gnu/java/awt/color/RgbProfileConverter.java \
+gnu/java/awt/color/SrgbConverter.java \
+gnu/java/awt/color/TagEntry.java \
+gnu/java/awt/color/ToneReproductionCurve.java \
+gnu/java/awt/image/ImageDecoder.java \
+gnu/java/awt/image/XBMDecoder.java \
+gnu/java/awt/peer/EmbeddedWindowPeer.java \
+gnu/java/awt/peer/GLightweightPeer.java \
+gnu/java/awt/peer/ClasspathFontPeer.java \
+gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
 java/applet/Applet.java \
 java/applet/AppletStub.java \
 java/applet/AppletContext.java \
@@ -6365,7 +5811,7 @@ gnu/java/rmi/server/UnicastRemoteStub.java \
 gnu/java/rmi/server/UnicastServer.java \
 gnu/java/rmi/server/UnicastServerRef.java
 
-javax_source_files = \
+javax_imageio_source_files = \
 javax/imageio/ImageWriteParam.java \
 javax/imageio/ImageReader.java \
 javax/imageio/ImageWriter.java \
@@ -6411,7 +5857,63 @@ javax/imageio/event/IIOWriteProgressListener.java \
 javax/imageio/ImageTranscoder.java \
 javax/imageio/ImageTypeSpecifier.java \
 javax/imageio/ImageIO.java \
-javax/imageio/IIOImage.java \
+javax/imageio/IIOImage.java
+
+javax_xml_source_files = \
+javax/xml/xpath/XPathConstants.java \
+javax/xml/xpath/XPathFunction.java \
+javax/xml/xpath/XPathVariableResolver.java \
+javax/xml/xpath/XPathExpressionException.java \
+javax/xml/xpath/XPathFunctionResolver.java \
+javax/xml/xpath/XPath.java \
+javax/xml/xpath/XPathFactoryConfigurationException.java        \
+javax/xml/xpath/XPathFactory.java \
+javax/xml/xpath/XPathException.java \
+javax/xml/xpath/XPathExpression.java \
+javax/xml/xpath/XPathFunctionException.java \
+javax/xml/validation/ValidatorHandler.java \
+javax/xml/validation/Validator.java \
+javax/xml/validation/TypeInfoProvider.java \
+javax/xml/validation/SchemaFactory.java        \
+javax/xml/validation/Schema.java \
+javax/xml/parsers/SAXParserFactory.java        \
+javax/xml/parsers/FactoryConfigurationError.java \
+javax/xml/parsers/SAXParser.java \
+javax/xml/parsers/DocumentBuilderFactory.java \
+javax/xml/parsers/ParserConfigurationException.java \
+javax/xml/parsers/DocumentBuilder.java \
+javax/xml/datatype/DatatypeFactory.java        \
+javax/xml/datatype/XMLGregorianCalendar.java \
+javax/xml/datatype/Duration.java \
+javax/xml/datatype/DatatypeConfigurationException.java \
+javax/xml/datatype/DatatypeConstants.java \
+javax/xml/XMLConstants.java \
+javax/xml/namespace/NamespaceContext.java \
+javax/xml/namespace/QName.java \
+javax/xml/transform/TransformerException.java \
+javax/xml/transform/TransformerFactoryConfigurationError.java \
+javax/xml/transform/sax/SAXResult.java \
+javax/xml/transform/sax/TransformerHandler.java        \
+javax/xml/transform/sax/SAXTransformerFactory.java \
+javax/xml/transform/sax/SAXSource.java \
+javax/xml/transform/sax/TemplatesHandler.java \
+javax/xml/transform/OutputKeys.java \
+javax/xml/transform/stream/StreamResult.java \
+javax/xml/transform/stream/StreamSource.java \
+javax/xml/transform/Source.java        \
+javax/xml/transform/SourceLocator.java \
+javax/xml/transform/ErrorListener.java \
+javax/xml/transform/TransformerConfigurationException.java \
+javax/xml/transform/Templates.java \
+javax/xml/transform/Result.java        \
+javax/xml/transform/URIResolver.java \
+javax/xml/transform/dom/DOMSource.java \
+javax/xml/transform/dom/DOMLocator.java        \
+javax/xml/transform/dom/DOMResult.java \
+javax/xml/transform/Transformer.java \
+javax/xml/transform/TransformerFactory.java
+
+javax_source_files = \
 javax/net/VanillaSocketFactory.java \
 javax/net/ssl/TrustManagerFactorySpi.java \
 javax/net/ssl/SSLKeyException.java \
@@ -6650,58 +6152,6 @@ javax/naming/NameClassPair.java  \
 javax/naming/RefAddr.java \
 javax/naming/CompositeName.java        \
 javax/naming/Name.java \
-javax/xml/xpath/XPathConstants.java \
-javax/xml/xpath/XPathFunction.java \
-javax/xml/xpath/XPathVariableResolver.java \
-javax/xml/xpath/XPathExpressionException.java \
-javax/xml/xpath/XPathFunctionResolver.java \
-javax/xml/xpath/XPath.java \
-javax/xml/xpath/XPathFactoryConfigurationException.java        \
-javax/xml/xpath/XPathFactory.java \
-javax/xml/xpath/XPathException.java \
-javax/xml/xpath/XPathExpression.java \
-javax/xml/xpath/XPathFunctionException.java \
-javax/xml/validation/ValidatorHandler.java \
-javax/xml/validation/Validator.java \
-javax/xml/validation/TypeInfoProvider.java \
-javax/xml/validation/SchemaFactory.java        \
-javax/xml/validation/Schema.java \
-javax/xml/parsers/SAXParserFactory.java        \
-javax/xml/parsers/FactoryConfigurationError.java \
-javax/xml/parsers/SAXParser.java \
-javax/xml/parsers/DocumentBuilderFactory.java \
-javax/xml/parsers/ParserConfigurationException.java \
-javax/xml/parsers/DocumentBuilder.java \
-javax/xml/datatype/DatatypeFactory.java        \
-javax/xml/datatype/XMLGregorianCalendar.java \
-javax/xml/datatype/Duration.java \
-javax/xml/datatype/DatatypeConfigurationException.java \
-javax/xml/datatype/DatatypeConstants.java \
-javax/xml/XMLConstants.java \
-javax/xml/namespace/NamespaceContext.java \
-javax/xml/namespace/QName.java \
-javax/xml/transform/TransformerException.java \
-javax/xml/transform/TransformerFactoryConfigurationError.java \
-javax/xml/transform/sax/SAXResult.java \
-javax/xml/transform/sax/TransformerHandler.java        \
-javax/xml/transform/sax/SAXTransformerFactory.java \
-javax/xml/transform/sax/SAXSource.java \
-javax/xml/transform/sax/TemplatesHandler.java \
-javax/xml/transform/OutputKeys.java \
-javax/xml/transform/stream/StreamResult.java \
-javax/xml/transform/stream/StreamSource.java \
-javax/xml/transform/Source.java        \
-javax/xml/transform/SourceLocator.java \
-javax/xml/transform/ErrorListener.java \
-javax/xml/transform/TransformerConfigurationException.java \
-javax/xml/transform/Templates.java \
-javax/xml/transform/Result.java        \
-javax/xml/transform/URIResolver.java \
-javax/xml/transform/dom/DOMSource.java \
-javax/xml/transform/dom/DOMLocator.java        \
-javax/xml/transform/dom/DOMResult.java \
-javax/xml/transform/Transformer.java \
-javax/xml/transform/TransformerFactory.java \
 javax/security/cert/CertificateNotYetValidException.java \
 javax/security/cert/Certificate.java \
 javax/security/cert/X509Certificate.java \
@@ -7291,6 +6741,7 @@ gnu/gcj/RawDataManaged.java \
 gnu/gcj/io/DefaultMimeTypes.java \
 gnu/gcj/io/MimeTypes.java \
 gnu/gcj/io/SimpleSHSStream.java        \
+gnu/gcj/runtime/BootClassLoader.java \
 gnu/gcj/runtime/FileDeleter.java \
 gnu/gcj/runtime/FinalizerThread.java \
 gnu/gcj/runtime/JNIWeakRef.java \
@@ -9580,6 +9031,8 @@ gnu/gcj/io/MimeTypes.lo: gnu/gcj/io/$(am__dirstamp) \
        gnu/gcj/io/$(DEPDIR)/$(am__dirstamp)
 gnu/gcj/io/SimpleSHSStream.lo: gnu/gcj/io/$(am__dirstamp) \
        gnu/gcj/io/$(DEPDIR)/$(am__dirstamp)
+gnu/gcj/runtime/BootClassLoader.lo: gnu/gcj/runtime/$(am__dirstamp) \
+       gnu/gcj/runtime/$(DEPDIR)/$(am__dirstamp)
 gnu/gcj/runtime/FileDeleter.lo: gnu/gcj/runtime/$(am__dirstamp) \
        gnu/gcj/runtime/$(DEPDIR)/$(am__dirstamp)
 gnu/gcj/runtime/FinalizerThread.lo: gnu/gcj/runtime/$(am__dirstamp) \
@@ -12045,176 +11498,6 @@ gnu/java/awt/peer/ClasspathFontPeer.lo:  \
 gnu/java/awt/peer/ClasspathTextLayoutPeer.lo:  \
        gnu/java/awt/peer/$(am__dirstamp) \
        gnu/java/awt/peer/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/$(am__dirstamp):
-       @$(mkdir_p) gnu/java/beans/decoder
-       @: > gnu/java/beans/decoder/$(am__dirstamp)
-gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/java/beans/decoder/$(DEPDIR)
-       @: > gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/AbstractContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/AbstractCreatableObjectContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/AbstractElementHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/AbstractObjectContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ArrayContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ArrayHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/AssemblyException.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/BooleanHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ByteHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/CharHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ClassHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ConstructorContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/Context.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/DecoderContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/DefaultExceptionListener.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/DoubleHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/DummyContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/DummyHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ElementHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/FloatHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/GrowableArrayContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/IndexContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/IntHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/JavaHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/LongHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/MethodContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/MethodFinder.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/NullHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ObjectContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ObjectHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/PersistenceParser.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/PropertyContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/ShortHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/SimpleHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/StaticMethodContext.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/StringHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/decoder/VoidHandler.lo:  \
-       gnu/java/beans/decoder/$(am__dirstamp) \
-       gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/$(am__dirstamp):
-       @$(mkdir_p) gnu/java/beans/editors
-       @: > gnu/java/beans/editors/$(am__dirstamp)
-gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/java/beans/editors/$(DEPDIR)
-       @: > gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/ColorEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/FontEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/NativeBooleanEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/NativeByteEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/NativeDoubleEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/NativeFloatEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/NativeIntEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/NativeLongEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/NativeShortEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/editors/StringEditor.lo:  \
-       gnu/java/beans/editors/$(am__dirstamp) \
-       gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/$(am__dirstamp):
-       @$(mkdir_p) gnu/java/beans
-       @: > gnu/java/beans/$(am__dirstamp)
-gnu/java/beans/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/java/beans/$(DEPDIR)
-       @: > gnu/java/beans/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/BeanInfoEmbryo.lo: gnu/java/beans/$(am__dirstamp) \
-       gnu/java/beans/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/DummyAppletContext.lo: gnu/java/beans/$(am__dirstamp) \
-       gnu/java/beans/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/DummyAppletStub.lo: gnu/java/beans/$(am__dirstamp) \
-       gnu/java/beans/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/ExplicitBeanInfo.lo: gnu/java/beans/$(am__dirstamp) \
-       gnu/java/beans/$(DEPDIR)/$(am__dirstamp)
-gnu/java/beans/IntrospectionIncubator.lo:  \
-       gnu/java/beans/$(am__dirstamp) \
-       gnu/java/beans/$(DEPDIR)/$(am__dirstamp)
 java/applet/$(am__dirstamp):
        @$(mkdir_p) java/applet
        @: > java/applet/$(am__dirstamp)
@@ -14141,162 +13424,6 @@ gnu/gcj/convert/Output_iconv.lo: gnu/gcj/convert/$(am__dirstamp) \
        gnu/gcj/convert/$(DEPDIR)/$(am__dirstamp)
 gnu/gcj/convert/UnicodeToBytes.lo: gnu/gcj/convert/$(am__dirstamp) \
        gnu/gcj/convert/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio
-       @: > javax/imageio/$(am__dirstamp)
-javax/imageio/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/$(DEPDIR)
-       @: > javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/ImageWriteParam.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/ImageReader.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/ImageWriter.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/IIOException.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/IIOParamController.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/ImageReadParam.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/IIOParam.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/spi
-       @: > javax/imageio/spi/$(am__dirstamp)
-javax/imageio/spi/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/spi/$(DEPDIR)
-       @: > javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/IIORegistry.lo: javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/ImageWriterSpi.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/ImageOutputStreamSpi.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/ServiceRegistry.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/ImageTranscoderSpi.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/ImageReaderSpi.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/IIOServiceProvider.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/ImageReaderWriterSpi.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/ImageInputStreamSpi.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/spi/RegisterableService.lo:  \
-       javax/imageio/spi/$(am__dirstamp) \
-       javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/metadata
-       @: > javax/imageio/metadata/$(am__dirstamp)
-javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/metadata/$(DEPDIR)
-       @: > javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIOAttr.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIONamedNodeMap.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIONodeList.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIOMetadataFormatImpl.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIOInvalidTreeException.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIOMetadataFormat.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIOMetadataController.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIOMetadataNode.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/metadata/IIOMetadata.lo:  \
-       javax/imageio/metadata/$(am__dirstamp) \
-       javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/stream
-       @: > javax/imageio/stream/$(am__dirstamp)
-javax/imageio/stream/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/stream/$(DEPDIR)
-       @: > javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/FileImageOutputStream.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/ImageInputStream.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/IIOByteBuffer.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/FileCacheImageInputStream.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/ImageInputStreamImpl.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/ImageOutputStreamImpl.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/MemoryCacheImageInputStream.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/FileCacheImageOutputStream.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/ImageOutputStream.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/MemoryCacheImageOutputStream.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/stream/FileImageInputStream.lo:  \
-       javax/imageio/stream/$(am__dirstamp) \
-       javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/event/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/event
-       @: > javax/imageio/event/$(am__dirstamp)
-javax/imageio/event/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/imageio/event/$(DEPDIR)
-       @: > javax/imageio/event/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/event/IIOReadProgressListener.lo:  \
-       javax/imageio/event/$(am__dirstamp) \
-       javax/imageio/event/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/event/IIOWriteWarningListener.lo:  \
-       javax/imageio/event/$(am__dirstamp) \
-       javax/imageio/event/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/event/IIOReadWarningListener.lo:  \
-       javax/imageio/event/$(am__dirstamp) \
-       javax/imageio/event/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/event/IIOReadUpdateListener.lo:  \
-       javax/imageio/event/$(am__dirstamp) \
-       javax/imageio/event/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/event/IIOWriteProgressListener.lo:  \
-       javax/imageio/event/$(am__dirstamp) \
-       javax/imageio/event/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/ImageTranscoder.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/ImageTypeSpecifier.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/ImageIO.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
-javax/imageio/IIOImage.lo: javax/imageio/$(am__dirstamp) \
-       javax/imageio/$(DEPDIR)/$(am__dirstamp)
 javax/net/$(am__dirstamp):
        @$(mkdir_p) javax/net
        @: > javax/net/$(am__dirstamp)
@@ -14994,208 +14121,6 @@ javax/naming/CompositeName.lo: javax/naming/$(am__dirstamp) \
        javax/naming/$(DEPDIR)/$(am__dirstamp)
 javax/naming/Name.lo: javax/naming/$(am__dirstamp) \
        javax/naming/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/xpath
-       @: > javax/xml/xpath/$(am__dirstamp)
-javax/xml/xpath/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/xpath/$(DEPDIR)
-       @: > javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathConstants.lo: javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathFunction.lo: javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathVariableResolver.lo:  \
-       javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathExpressionException.lo:  \
-       javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathFunctionResolver.lo:  \
-       javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPath.lo: javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathFactoryConfigurationException.lo:  \
-       javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathFactory.lo: javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathException.lo: javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathExpression.lo: javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/xpath/XPathFunctionException.lo:  \
-       javax/xml/xpath/$(am__dirstamp) \
-       javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-javax/xml/validation/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/validation
-       @: > javax/xml/validation/$(am__dirstamp)
-javax/xml/validation/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/validation/$(DEPDIR)
-       @: > javax/xml/validation/$(DEPDIR)/$(am__dirstamp)
-javax/xml/validation/ValidatorHandler.lo:  \
-       javax/xml/validation/$(am__dirstamp) \
-       javax/xml/validation/$(DEPDIR)/$(am__dirstamp)
-javax/xml/validation/Validator.lo:  \
-       javax/xml/validation/$(am__dirstamp) \
-       javax/xml/validation/$(DEPDIR)/$(am__dirstamp)
-javax/xml/validation/TypeInfoProvider.lo:  \
-       javax/xml/validation/$(am__dirstamp) \
-       javax/xml/validation/$(DEPDIR)/$(am__dirstamp)
-javax/xml/validation/SchemaFactory.lo:  \
-       javax/xml/validation/$(am__dirstamp) \
-       javax/xml/validation/$(DEPDIR)/$(am__dirstamp)
-javax/xml/validation/Schema.lo: javax/xml/validation/$(am__dirstamp) \
-       javax/xml/validation/$(DEPDIR)/$(am__dirstamp)
-javax/xml/parsers/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/parsers
-       @: > javax/xml/parsers/$(am__dirstamp)
-javax/xml/parsers/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/parsers/$(DEPDIR)
-       @: > javax/xml/parsers/$(DEPDIR)/$(am__dirstamp)
-javax/xml/parsers/SAXParserFactory.lo:  \
-       javax/xml/parsers/$(am__dirstamp) \
-       javax/xml/parsers/$(DEPDIR)/$(am__dirstamp)
-javax/xml/parsers/FactoryConfigurationError.lo:  \
-       javax/xml/parsers/$(am__dirstamp) \
-       javax/xml/parsers/$(DEPDIR)/$(am__dirstamp)
-javax/xml/parsers/SAXParser.lo: javax/xml/parsers/$(am__dirstamp) \
-       javax/xml/parsers/$(DEPDIR)/$(am__dirstamp)
-javax/xml/parsers/DocumentBuilderFactory.lo:  \
-       javax/xml/parsers/$(am__dirstamp) \
-       javax/xml/parsers/$(DEPDIR)/$(am__dirstamp)
-javax/xml/parsers/ParserConfigurationException.lo:  \
-       javax/xml/parsers/$(am__dirstamp) \
-       javax/xml/parsers/$(DEPDIR)/$(am__dirstamp)
-javax/xml/parsers/DocumentBuilder.lo:  \
-       javax/xml/parsers/$(am__dirstamp) \
-       javax/xml/parsers/$(DEPDIR)/$(am__dirstamp)
-javax/xml/datatype/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/datatype
-       @: > javax/xml/datatype/$(am__dirstamp)
-javax/xml/datatype/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/datatype/$(DEPDIR)
-       @: > javax/xml/datatype/$(DEPDIR)/$(am__dirstamp)
-javax/xml/datatype/DatatypeFactory.lo:  \
-       javax/xml/datatype/$(am__dirstamp) \
-       javax/xml/datatype/$(DEPDIR)/$(am__dirstamp)
-javax/xml/datatype/XMLGregorianCalendar.lo:  \
-       javax/xml/datatype/$(am__dirstamp) \
-       javax/xml/datatype/$(DEPDIR)/$(am__dirstamp)
-javax/xml/datatype/Duration.lo: javax/xml/datatype/$(am__dirstamp) \
-       javax/xml/datatype/$(DEPDIR)/$(am__dirstamp)
-javax/xml/datatype/DatatypeConfigurationException.lo:  \
-       javax/xml/datatype/$(am__dirstamp) \
-       javax/xml/datatype/$(DEPDIR)/$(am__dirstamp)
-javax/xml/datatype/DatatypeConstants.lo:  \
-       javax/xml/datatype/$(am__dirstamp) \
-       javax/xml/datatype/$(DEPDIR)/$(am__dirstamp)
-javax/xml/$(am__dirstamp):
-       @$(mkdir_p) javax/xml
-       @: > javax/xml/$(am__dirstamp)
-javax/xml/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/$(DEPDIR)
-       @: > javax/xml/$(DEPDIR)/$(am__dirstamp)
-javax/xml/XMLConstants.lo: javax/xml/$(am__dirstamp) \
-       javax/xml/$(DEPDIR)/$(am__dirstamp)
-javax/xml/namespace/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/namespace
-       @: > javax/xml/namespace/$(am__dirstamp)
-javax/xml/namespace/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/namespace/$(DEPDIR)
-       @: > javax/xml/namespace/$(DEPDIR)/$(am__dirstamp)
-javax/xml/namespace/NamespaceContext.lo:  \
-       javax/xml/namespace/$(am__dirstamp) \
-       javax/xml/namespace/$(DEPDIR)/$(am__dirstamp)
-javax/xml/namespace/QName.lo: javax/xml/namespace/$(am__dirstamp) \
-       javax/xml/namespace/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/transform
-       @: > javax/xml/transform/$(am__dirstamp)
-javax/xml/transform/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/transform/$(DEPDIR)
-       @: > javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/TransformerException.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/TransformerFactoryConfigurationError.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/sax/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/transform/sax
-       @: > javax/xml/transform/sax/$(am__dirstamp)
-javax/xml/transform/sax/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/transform/sax/$(DEPDIR)
-       @: > javax/xml/transform/sax/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/sax/SAXResult.lo:  \
-       javax/xml/transform/sax/$(am__dirstamp) \
-       javax/xml/transform/sax/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/sax/TransformerHandler.lo:  \
-       javax/xml/transform/sax/$(am__dirstamp) \
-       javax/xml/transform/sax/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/sax/SAXTransformerFactory.lo:  \
-       javax/xml/transform/sax/$(am__dirstamp) \
-       javax/xml/transform/sax/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/sax/SAXSource.lo:  \
-       javax/xml/transform/sax/$(am__dirstamp) \
-       javax/xml/transform/sax/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/sax/TemplatesHandler.lo:  \
-       javax/xml/transform/sax/$(am__dirstamp) \
-       javax/xml/transform/sax/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/OutputKeys.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/stream/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/transform/stream
-       @: > javax/xml/transform/stream/$(am__dirstamp)
-javax/xml/transform/stream/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/transform/stream/$(DEPDIR)
-       @: > javax/xml/transform/stream/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/stream/StreamResult.lo:  \
-       javax/xml/transform/stream/$(am__dirstamp) \
-       javax/xml/transform/stream/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/stream/StreamSource.lo:  \
-       javax/xml/transform/stream/$(am__dirstamp) \
-       javax/xml/transform/stream/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/Source.lo: javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/SourceLocator.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/ErrorListener.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/TransformerConfigurationException.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/Templates.lo: javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/Result.lo: javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/URIResolver.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/dom/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/transform/dom
-       @: > javax/xml/transform/dom/$(am__dirstamp)
-javax/xml/transform/dom/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) javax/xml/transform/dom/$(DEPDIR)
-       @: > javax/xml/transform/dom/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/dom/DOMSource.lo:  \
-       javax/xml/transform/dom/$(am__dirstamp) \
-       javax/xml/transform/dom/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/dom/DOMLocator.lo:  \
-       javax/xml/transform/dom/$(am__dirstamp) \
-       javax/xml/transform/dom/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/dom/DOMResult.lo:  \
-       javax/xml/transform/dom/$(am__dirstamp) \
-       javax/xml/transform/dom/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/Transformer.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-javax/xml/transform/TransformerFactory.lo:  \
-       javax/xml/transform/$(am__dirstamp) \
-       javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
 javax/security/cert/$(am__dirstamp):
        @$(mkdir_p) javax/security/cert
        @: > javax/security/cert/$(am__dirstamp)
@@ -15682,426 +14607,6 @@ org/ietf/jgss/GSSCredential.lo: org/ietf/jgss/$(am__dirstamp) \
        org/ietf/jgss/$(DEPDIR)/$(am__dirstamp)
 org/ietf/jgss/ChannelBinding.lo: org/ietf/jgss/$(am__dirstamp) \
        org/ietf/jgss/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/xpath
-       @: > gnu/xml/xpath/$(am__dirstamp)
-gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/xpath/$(DEPDIR)
-       @: > gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/EqualityExpr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NumberFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/StringLengthFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NameFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/SumFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Pattern.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/StringFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NegativeExpr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/UnionExpr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/SubstringFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Expr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/XPathFactoryImpl.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NormalizeSpaceFunction.lo:  \
-       gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Constant.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Predicate.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Path.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/OrExpr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/LangFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/StartsWithFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/SubstringAfterFunction.lo:  \
-       gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/FloorFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NotFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Root.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/PositionFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/VariableReference.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/DocumentOrderComparator.lo:  \
-       gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/LocalNameFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NamespaceUriFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/TranslateFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/FalseFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/AndExpr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/XPathParser.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NamespaceTest.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/ConcatFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NameTest.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/CountFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/IdFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/LastFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/XPathTokenizer.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Steps.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/TrueFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/BooleanFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/ParenthesizedExpr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/XPathImpl.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Selector.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/RoundFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/SubstringBeforeFunction.lo:  \
-       gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Function.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/CeilingFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/RelationalExpr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/FunctionCall.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/NodeTypeTest.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/ArithmeticExpr.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/Test.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/xpath/ContainsFunction.lo: gnu/xml/xpath/$(am__dirstamp) \
-       gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/pipeline
-       @: > gnu/xml/pipeline/$(am__dirstamp)
-gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/pipeline/$(DEPDIR)
-       @: > gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/EventFilter.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/NSFilter.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/XsltFilter.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/ValidationConsumer.lo:  \
-       gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/PipelineFactory.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/TextConsumer.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/LinkFilter.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/TeeConsumer.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/DomConsumer.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/EventConsumer.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/WellFormednessFilter.lo:  \
-       gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/XIncludeFilter.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/pipeline/CallFilter.lo: gnu/xml/pipeline/$(am__dirstamp) \
-       gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/aelfred2/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/aelfred2
-       @: > gnu/xml/aelfred2/$(am__dirstamp)
-gnu/xml/aelfred2/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/aelfred2/$(DEPDIR)
-       @: > gnu/xml/aelfred2/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/aelfred2/XmlParser.lo: gnu/xml/aelfred2/$(am__dirstamp) \
-       gnu/xml/aelfred2/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/aelfred2/XmlReader.lo: gnu/xml/aelfred2/$(am__dirstamp) \
-       gnu/xml/aelfred2/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/aelfred2/JAXPFactory.lo: gnu/xml/aelfred2/$(am__dirstamp) \
-       gnu/xml/aelfred2/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/aelfred2/ContentHandler2.lo: gnu/xml/aelfred2/$(am__dirstamp) \
-       gnu/xml/aelfred2/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/aelfred2/SAXDriver.lo: gnu/xml/aelfred2/$(am__dirstamp) \
-       gnu/xml/aelfred2/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/util/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/util
-       @: > gnu/xml/util/$(am__dirstamp)
-gnu/xml/util/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/util/$(DEPDIR)
-       @: > gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/util/XCat.lo: gnu/xml/util/$(am__dirstamp) \
-       gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/util/DomParser.lo: gnu/xml/util/$(am__dirstamp) \
-       gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/util/XMLWriter.lo: gnu/xml/util/$(am__dirstamp) \
-       gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/util/Resolver.lo: gnu/xml/util/$(am__dirstamp) \
-       gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/util/DoParse.lo: gnu/xml/util/$(am__dirstamp) \
-       gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/util/XHTMLWriter.lo: gnu/xml/util/$(am__dirstamp) \
-       gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/util/SAXNullTransformerFactory.lo:  \
-       gnu/xml/util/$(am__dirstamp) \
-       gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/dom
-       @: > gnu/xml/dom/$(am__dirstamp)
-gnu/xml/dom/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/dom/$(DEPDIR)
-       @: > gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomXPathNSResolver.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/dom/ls
-       @: > gnu/xml/dom/ls/$(am__dirstamp)
-gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/dom/ls/$(DEPDIR)
-       @: > gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/FilteredSAXEventSink.lo:  \
-       gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/DomLSException.lo: gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/DomLSSerializer.lo: gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/DomLSInput.lo: gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/DomLSOutput.lo: gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/SAXEventSink.lo: gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/DomLSParser.lo: gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/ReaderInputStream.lo: gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ls/WriterOutputStream.lo: gnu/xml/dom/ls/$(am__dirstamp) \
-       gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomElement.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomNsNode.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomAttr.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DTDAttributeTypeInfo.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomDocumentBuilder.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DTDElementTypeInfo.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomDocument.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomXPathExpression.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomDocumentConfiguration.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomDocumentFragment.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomProcessingInstruction.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/Consumer.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomComment.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomCharacterData.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomExtern.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomEntityReference.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomNamedNodeMap.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ImplementationList.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/ImplementationSource.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomImpl.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomDoctype.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomNode.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomXPathResult.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomDocumentBuilderFactory.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomText.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomNSResolverContext.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomNodeIterator.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomNotation.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/JAXPFactory.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomIterator.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomEvent.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomEntity.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomCDATASection.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/dom/DomDOMException.lo: gnu/xml/dom/$(am__dirstamp) \
-       gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/transform
-       @: > gnu/xml/transform/$(am__dirstamp)
-gnu/xml/transform/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) gnu/xml/transform/$(DEPDIR)
-       @: > gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/GenerateIdFunction.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/FormatNumberFunction.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ValueOfNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ApplyImportsNode.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/WithParam.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/DocumentFunction.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/SAXSerializer.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/FunctionAvailableFunction.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ElementAvailableFunction.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/IfNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ApplyTemplatesNode.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/SortKey.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/Key.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ElementNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/CurrentFunction.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/XSLComparator.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/CallTemplateNode.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/TemplatesImpl.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ChooseNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/NumberNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/CopyOfNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ParameterNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/TransformerFactoryImpl.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/TextNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/CopyNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/SystemPropertyFunction.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/Stylesheet.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ProcessingInstructionNode.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/UnparsedEntityUriFunction.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/URIResolverEntityResolver.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ErrorListenerErrorHandler.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/Bindings.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/AttributeSet.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/Template.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/MessageNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/LiteralNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/StreamSerializer.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/XSLURIResolver.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/AttributeNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/CommentNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/ForEachNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/KeyFunction.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/TransformerImpl.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/WhenNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/NodeNumberNode.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/OtherwiseNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/AbstractNumberNode.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/TemplateNode.lo: gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/TransformerOutputProperties.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-gnu/xml/transform/DOMSourceLocator.lo:  \
-       gnu/xml/transform/$(am__dirstamp) \
-       gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
 java/lang/ConcreteProcess.lo: java/lang/$(am__dirstamp) \
        java/lang/$(DEPDIR)/$(am__dirstamp)
 gnu/classpath/Configuration.lo: gnu/classpath/$(am__dirstamp) \
@@ -16327,6 +14832,8 @@ mostlyclean-compile:
        -rm -f gnu/gcj/io/shs.lo
        -rm -f gnu/gcj/natCore.$(OBJEXT)
        -rm -f gnu/gcj/natCore.lo
+       -rm -f gnu/gcj/runtime/BootClassLoader.$(OBJEXT)
+       -rm -f gnu/gcj/runtime/BootClassLoader.lo
        -rm -f gnu/gcj/runtime/FileDeleter.$(OBJEXT)
        -rm -f gnu/gcj/runtime/FileDeleter.lo
        -rm -f gnu/gcj/runtime/FinalizerThread.$(OBJEXT)
@@ -16590,110 +15097,6 @@ mostlyclean-compile:
        -rm -f gnu/java/awt/peer/gtk/lib_gnu_java_awt_peer_gtk_la-GtkToolkit.lo
        -rm -f gnu/java/awt/peer/gtk/lib_gnu_java_awt_peer_gtk_la-GtkWindowPeer.$(OBJEXT)
        -rm -f gnu/java/awt/peer/gtk/lib_gnu_java_awt_peer_gtk_la-GtkWindowPeer.lo
-       -rm -f gnu/java/beans/BeanInfoEmbryo.$(OBJEXT)
-       -rm -f gnu/java/beans/BeanInfoEmbryo.lo
-       -rm -f gnu/java/beans/DummyAppletContext.$(OBJEXT)
-       -rm -f gnu/java/beans/DummyAppletContext.lo
-       -rm -f gnu/java/beans/DummyAppletStub.$(OBJEXT)
-       -rm -f gnu/java/beans/DummyAppletStub.lo
-       -rm -f gnu/java/beans/ExplicitBeanInfo.$(OBJEXT)
-       -rm -f gnu/java/beans/ExplicitBeanInfo.lo
-       -rm -f gnu/java/beans/IntrospectionIncubator.$(OBJEXT)
-       -rm -f gnu/java/beans/IntrospectionIncubator.lo
-       -rm -f gnu/java/beans/decoder/AbstractContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/AbstractContext.lo
-       -rm -f gnu/java/beans/decoder/AbstractCreatableObjectContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/AbstractCreatableObjectContext.lo
-       -rm -f gnu/java/beans/decoder/AbstractElementHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/AbstractElementHandler.lo
-       -rm -f gnu/java/beans/decoder/AbstractObjectContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/AbstractObjectContext.lo
-       -rm -f gnu/java/beans/decoder/ArrayContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ArrayContext.lo
-       -rm -f gnu/java/beans/decoder/ArrayHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ArrayHandler.lo
-       -rm -f gnu/java/beans/decoder/AssemblyException.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/AssemblyException.lo
-       -rm -f gnu/java/beans/decoder/BooleanHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/BooleanHandler.lo
-       -rm -f gnu/java/beans/decoder/ByteHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ByteHandler.lo
-       -rm -f gnu/java/beans/decoder/CharHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/CharHandler.lo
-       -rm -f gnu/java/beans/decoder/ClassHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ClassHandler.lo
-       -rm -f gnu/java/beans/decoder/ConstructorContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ConstructorContext.lo
-       -rm -f gnu/java/beans/decoder/Context.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/Context.lo
-       -rm -f gnu/java/beans/decoder/DecoderContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/DecoderContext.lo
-       -rm -f gnu/java/beans/decoder/DefaultExceptionListener.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/DefaultExceptionListener.lo
-       -rm -f gnu/java/beans/decoder/DoubleHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/DoubleHandler.lo
-       -rm -f gnu/java/beans/decoder/DummyContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/DummyContext.lo
-       -rm -f gnu/java/beans/decoder/DummyHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/DummyHandler.lo
-       -rm -f gnu/java/beans/decoder/ElementHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ElementHandler.lo
-       -rm -f gnu/java/beans/decoder/FloatHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/FloatHandler.lo
-       -rm -f gnu/java/beans/decoder/GrowableArrayContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/GrowableArrayContext.lo
-       -rm -f gnu/java/beans/decoder/IndexContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/IndexContext.lo
-       -rm -f gnu/java/beans/decoder/IntHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/IntHandler.lo
-       -rm -f gnu/java/beans/decoder/JavaHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/JavaHandler.lo
-       -rm -f gnu/java/beans/decoder/LongHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/LongHandler.lo
-       -rm -f gnu/java/beans/decoder/MethodContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/MethodContext.lo
-       -rm -f gnu/java/beans/decoder/MethodFinder.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/MethodFinder.lo
-       -rm -f gnu/java/beans/decoder/NullHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/NullHandler.lo
-       -rm -f gnu/java/beans/decoder/ObjectContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ObjectContext.lo
-       -rm -f gnu/java/beans/decoder/ObjectHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ObjectHandler.lo
-       -rm -f gnu/java/beans/decoder/PersistenceParser.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/PersistenceParser.lo
-       -rm -f gnu/java/beans/decoder/PropertyContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/PropertyContext.lo
-       -rm -f gnu/java/beans/decoder/ShortHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/ShortHandler.lo
-       -rm -f gnu/java/beans/decoder/SimpleHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/SimpleHandler.lo
-       -rm -f gnu/java/beans/decoder/StaticMethodContext.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/StaticMethodContext.lo
-       -rm -f gnu/java/beans/decoder/StringHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/StringHandler.lo
-       -rm -f gnu/java/beans/decoder/VoidHandler.$(OBJEXT)
-       -rm -f gnu/java/beans/decoder/VoidHandler.lo
-       -rm -f gnu/java/beans/editors/ColorEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/ColorEditor.lo
-       -rm -f gnu/java/beans/editors/FontEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/FontEditor.lo
-       -rm -f gnu/java/beans/editors/NativeBooleanEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/NativeBooleanEditor.lo
-       -rm -f gnu/java/beans/editors/NativeByteEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/NativeByteEditor.lo
-       -rm -f gnu/java/beans/editors/NativeDoubleEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/NativeDoubleEditor.lo
-       -rm -f gnu/java/beans/editors/NativeFloatEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/NativeFloatEditor.lo
-       -rm -f gnu/java/beans/editors/NativeIntEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/NativeIntEditor.lo
-       -rm -f gnu/java/beans/editors/NativeLongEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/NativeLongEditor.lo
-       -rm -f gnu/java/beans/editors/NativeShortEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/NativeShortEditor.lo
-       -rm -f gnu/java/beans/editors/StringEditor.$(OBJEXT)
-       -rm -f gnu/java/beans/editors/StringEditor.lo
        -rm -f gnu/java/io/ASN1ParsingException.$(OBJEXT)
        -rm -f gnu/java/io/ASN1ParsingException.lo
        -rm -f gnu/java/io/Base64InputStream.$(OBJEXT)
@@ -17470,354 +15873,6 @@ mostlyclean-compile:
        -rm -f gnu/regexp/RETokenWordBoundary.lo
        -rm -f gnu/regexp/UncheckedRE.$(OBJEXT)
        -rm -f gnu/regexp/UncheckedRE.lo
-       -rm -f gnu/xml/aelfred2/ContentHandler2.$(OBJEXT)
-       -rm -f gnu/xml/aelfred2/ContentHandler2.lo
-       -rm -f gnu/xml/aelfred2/JAXPFactory.$(OBJEXT)
-       -rm -f gnu/xml/aelfred2/JAXPFactory.lo
-       -rm -f gnu/xml/aelfred2/SAXDriver.$(OBJEXT)
-       -rm -f gnu/xml/aelfred2/SAXDriver.lo
-       -rm -f gnu/xml/aelfred2/XmlParser.$(OBJEXT)
-       -rm -f gnu/xml/aelfred2/XmlParser.lo
-       -rm -f gnu/xml/aelfred2/XmlReader.$(OBJEXT)
-       -rm -f gnu/xml/aelfred2/XmlReader.lo
-       -rm -f gnu/xml/dom/Consumer.$(OBJEXT)
-       -rm -f gnu/xml/dom/Consumer.lo
-       -rm -f gnu/xml/dom/DTDAttributeTypeInfo.$(OBJEXT)
-       -rm -f gnu/xml/dom/DTDAttributeTypeInfo.lo
-       -rm -f gnu/xml/dom/DTDElementTypeInfo.$(OBJEXT)
-       -rm -f gnu/xml/dom/DTDElementTypeInfo.lo
-       -rm -f gnu/xml/dom/DomAttr.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomAttr.lo
-       -rm -f gnu/xml/dom/DomCDATASection.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomCDATASection.lo
-       -rm -f gnu/xml/dom/DomCharacterData.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomCharacterData.lo
-       -rm -f gnu/xml/dom/DomComment.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomComment.lo
-       -rm -f gnu/xml/dom/DomDOMException.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomDOMException.lo
-       -rm -f gnu/xml/dom/DomDoctype.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomDoctype.lo
-       -rm -f gnu/xml/dom/DomDocument.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomDocument.lo
-       -rm -f gnu/xml/dom/DomDocumentBuilder.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomDocumentBuilder.lo
-       -rm -f gnu/xml/dom/DomDocumentBuilderFactory.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomDocumentBuilderFactory.lo
-       -rm -f gnu/xml/dom/DomDocumentConfiguration.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomDocumentConfiguration.lo
-       -rm -f gnu/xml/dom/DomDocumentFragment.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomDocumentFragment.lo
-       -rm -f gnu/xml/dom/DomElement.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomElement.lo
-       -rm -f gnu/xml/dom/DomEntity.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomEntity.lo
-       -rm -f gnu/xml/dom/DomEntityReference.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomEntityReference.lo
-       -rm -f gnu/xml/dom/DomEvent.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomEvent.lo
-       -rm -f gnu/xml/dom/DomExtern.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomExtern.lo
-       -rm -f gnu/xml/dom/DomImpl.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomImpl.lo
-       -rm -f gnu/xml/dom/DomIterator.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomIterator.lo
-       -rm -f gnu/xml/dom/DomNSResolverContext.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomNSResolverContext.lo
-       -rm -f gnu/xml/dom/DomNamedNodeMap.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomNamedNodeMap.lo
-       -rm -f gnu/xml/dom/DomNode.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomNode.lo
-       -rm -f gnu/xml/dom/DomNodeIterator.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomNodeIterator.lo
-       -rm -f gnu/xml/dom/DomNotation.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomNotation.lo
-       -rm -f gnu/xml/dom/DomNsNode.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomNsNode.lo
-       -rm -f gnu/xml/dom/DomProcessingInstruction.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomProcessingInstruction.lo
-       -rm -f gnu/xml/dom/DomText.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomText.lo
-       -rm -f gnu/xml/dom/DomXPathExpression.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomXPathExpression.lo
-       -rm -f gnu/xml/dom/DomXPathNSResolver.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomXPathNSResolver.lo
-       -rm -f gnu/xml/dom/DomXPathResult.$(OBJEXT)
-       -rm -f gnu/xml/dom/DomXPathResult.lo
-       -rm -f gnu/xml/dom/ImplementationList.$(OBJEXT)
-       -rm -f gnu/xml/dom/ImplementationList.lo
-       -rm -f gnu/xml/dom/ImplementationSource.$(OBJEXT)
-       -rm -f gnu/xml/dom/ImplementationSource.lo
-       -rm -f gnu/xml/dom/JAXPFactory.$(OBJEXT)
-       -rm -f gnu/xml/dom/JAXPFactory.lo
-       -rm -f gnu/xml/dom/ls/DomLSException.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/DomLSException.lo
-       -rm -f gnu/xml/dom/ls/DomLSInput.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/DomLSInput.lo
-       -rm -f gnu/xml/dom/ls/DomLSOutput.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/DomLSOutput.lo
-       -rm -f gnu/xml/dom/ls/DomLSParser.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/DomLSParser.lo
-       -rm -f gnu/xml/dom/ls/DomLSSerializer.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/DomLSSerializer.lo
-       -rm -f gnu/xml/dom/ls/FilteredSAXEventSink.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/FilteredSAXEventSink.lo
-       -rm -f gnu/xml/dom/ls/ReaderInputStream.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/ReaderInputStream.lo
-       -rm -f gnu/xml/dom/ls/SAXEventSink.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/SAXEventSink.lo
-       -rm -f gnu/xml/dom/ls/WriterOutputStream.$(OBJEXT)
-       -rm -f gnu/xml/dom/ls/WriterOutputStream.lo
-       -rm -f gnu/xml/pipeline/CallFilter.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/CallFilter.lo
-       -rm -f gnu/xml/pipeline/DomConsumer.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/DomConsumer.lo
-       -rm -f gnu/xml/pipeline/EventConsumer.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/EventConsumer.lo
-       -rm -f gnu/xml/pipeline/EventFilter.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/EventFilter.lo
-       -rm -f gnu/xml/pipeline/LinkFilter.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/LinkFilter.lo
-       -rm -f gnu/xml/pipeline/NSFilter.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/NSFilter.lo
-       -rm -f gnu/xml/pipeline/PipelineFactory.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/PipelineFactory.lo
-       -rm -f gnu/xml/pipeline/TeeConsumer.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/TeeConsumer.lo
-       -rm -f gnu/xml/pipeline/TextConsumer.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/TextConsumer.lo
-       -rm -f gnu/xml/pipeline/ValidationConsumer.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/ValidationConsumer.lo
-       -rm -f gnu/xml/pipeline/WellFormednessFilter.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/WellFormednessFilter.lo
-       -rm -f gnu/xml/pipeline/XIncludeFilter.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/XIncludeFilter.lo
-       -rm -f gnu/xml/pipeline/XsltFilter.$(OBJEXT)
-       -rm -f gnu/xml/pipeline/XsltFilter.lo
-       -rm -f gnu/xml/transform/AbstractNumberNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/AbstractNumberNode.lo
-       -rm -f gnu/xml/transform/ApplyImportsNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/ApplyImportsNode.lo
-       -rm -f gnu/xml/transform/ApplyTemplatesNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/ApplyTemplatesNode.lo
-       -rm -f gnu/xml/transform/AttributeNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/AttributeNode.lo
-       -rm -f gnu/xml/transform/AttributeSet.$(OBJEXT)
-       -rm -f gnu/xml/transform/AttributeSet.lo
-       -rm -f gnu/xml/transform/Bindings.$(OBJEXT)
-       -rm -f gnu/xml/transform/Bindings.lo
-       -rm -f gnu/xml/transform/CallTemplateNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/CallTemplateNode.lo
-       -rm -f gnu/xml/transform/ChooseNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/ChooseNode.lo
-       -rm -f gnu/xml/transform/CommentNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/CommentNode.lo
-       -rm -f gnu/xml/transform/CopyNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/CopyNode.lo
-       -rm -f gnu/xml/transform/CopyOfNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/CopyOfNode.lo
-       -rm -f gnu/xml/transform/CurrentFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/CurrentFunction.lo
-       -rm -f gnu/xml/transform/DOMSourceLocator.$(OBJEXT)
-       -rm -f gnu/xml/transform/DOMSourceLocator.lo
-       -rm -f gnu/xml/transform/DocumentFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/DocumentFunction.lo
-       -rm -f gnu/xml/transform/ElementAvailableFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/ElementAvailableFunction.lo
-       -rm -f gnu/xml/transform/ElementNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/ElementNode.lo
-       -rm -f gnu/xml/transform/ErrorListenerErrorHandler.$(OBJEXT)
-       -rm -f gnu/xml/transform/ErrorListenerErrorHandler.lo
-       -rm -f gnu/xml/transform/ForEachNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/ForEachNode.lo
-       -rm -f gnu/xml/transform/FormatNumberFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/FormatNumberFunction.lo
-       -rm -f gnu/xml/transform/FunctionAvailableFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/FunctionAvailableFunction.lo
-       -rm -f gnu/xml/transform/GenerateIdFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/GenerateIdFunction.lo
-       -rm -f gnu/xml/transform/IfNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/IfNode.lo
-       -rm -f gnu/xml/transform/Key.$(OBJEXT)
-       -rm -f gnu/xml/transform/Key.lo
-       -rm -f gnu/xml/transform/KeyFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/KeyFunction.lo
-       -rm -f gnu/xml/transform/LiteralNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/LiteralNode.lo
-       -rm -f gnu/xml/transform/MessageNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/MessageNode.lo
-       -rm -f gnu/xml/transform/NodeNumberNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/NodeNumberNode.lo
-       -rm -f gnu/xml/transform/NumberNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/NumberNode.lo
-       -rm -f gnu/xml/transform/OtherwiseNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/OtherwiseNode.lo
-       -rm -f gnu/xml/transform/ParameterNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/ParameterNode.lo
-       -rm -f gnu/xml/transform/ProcessingInstructionNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/ProcessingInstructionNode.lo
-       -rm -f gnu/xml/transform/SAXSerializer.$(OBJEXT)
-       -rm -f gnu/xml/transform/SAXSerializer.lo
-       -rm -f gnu/xml/transform/SortKey.$(OBJEXT)
-       -rm -f gnu/xml/transform/SortKey.lo
-       -rm -f gnu/xml/transform/StreamSerializer.$(OBJEXT)
-       -rm -f gnu/xml/transform/StreamSerializer.lo
-       -rm -f gnu/xml/transform/Stylesheet.$(OBJEXT)
-       -rm -f gnu/xml/transform/Stylesheet.lo
-       -rm -f gnu/xml/transform/SystemPropertyFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/SystemPropertyFunction.lo
-       -rm -f gnu/xml/transform/Template.$(OBJEXT)
-       -rm -f gnu/xml/transform/Template.lo
-       -rm -f gnu/xml/transform/TemplateNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/TemplateNode.lo
-       -rm -f gnu/xml/transform/TemplatesImpl.$(OBJEXT)
-       -rm -f gnu/xml/transform/TemplatesImpl.lo
-       -rm -f gnu/xml/transform/TextNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/TextNode.lo
-       -rm -f gnu/xml/transform/TransformerFactoryImpl.$(OBJEXT)
-       -rm -f gnu/xml/transform/TransformerFactoryImpl.lo
-       -rm -f gnu/xml/transform/TransformerImpl.$(OBJEXT)
-       -rm -f gnu/xml/transform/TransformerImpl.lo
-       -rm -f gnu/xml/transform/TransformerOutputProperties.$(OBJEXT)
-       -rm -f gnu/xml/transform/TransformerOutputProperties.lo
-       -rm -f gnu/xml/transform/URIResolverEntityResolver.$(OBJEXT)
-       -rm -f gnu/xml/transform/URIResolverEntityResolver.lo
-       -rm -f gnu/xml/transform/UnparsedEntityUriFunction.$(OBJEXT)
-       -rm -f gnu/xml/transform/UnparsedEntityUriFunction.lo
-       -rm -f gnu/xml/transform/ValueOfNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/ValueOfNode.lo
-       -rm -f gnu/xml/transform/WhenNode.$(OBJEXT)
-       -rm -f gnu/xml/transform/WhenNode.lo
-       -rm -f gnu/xml/transform/WithParam.$(OBJEXT)
-       -rm -f gnu/xml/transform/WithParam.lo
-       -rm -f gnu/xml/transform/XSLComparator.$(OBJEXT)
-       -rm -f gnu/xml/transform/XSLComparator.lo
-       -rm -f gnu/xml/transform/XSLURIResolver.$(OBJEXT)
-       -rm -f gnu/xml/transform/XSLURIResolver.lo
-       -rm -f gnu/xml/util/DoParse.$(OBJEXT)
-       -rm -f gnu/xml/util/DoParse.lo
-       -rm -f gnu/xml/util/DomParser.$(OBJEXT)
-       -rm -f gnu/xml/util/DomParser.lo
-       -rm -f gnu/xml/util/Resolver.$(OBJEXT)
-       -rm -f gnu/xml/util/Resolver.lo
-       -rm -f gnu/xml/util/SAXNullTransformerFactory.$(OBJEXT)
-       -rm -f gnu/xml/util/SAXNullTransformerFactory.lo
-       -rm -f gnu/xml/util/XCat.$(OBJEXT)
-       -rm -f gnu/xml/util/XCat.lo
-       -rm -f gnu/xml/util/XHTMLWriter.$(OBJEXT)
-       -rm -f gnu/xml/util/XHTMLWriter.lo
-       -rm -f gnu/xml/util/XMLWriter.$(OBJEXT)
-       -rm -f gnu/xml/util/XMLWriter.lo
-       -rm -f gnu/xml/xpath/AndExpr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/AndExpr.lo
-       -rm -f gnu/xml/xpath/ArithmeticExpr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/ArithmeticExpr.lo
-       -rm -f gnu/xml/xpath/BooleanFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/BooleanFunction.lo
-       -rm -f gnu/xml/xpath/CeilingFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/CeilingFunction.lo
-       -rm -f gnu/xml/xpath/ConcatFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/ConcatFunction.lo
-       -rm -f gnu/xml/xpath/Constant.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Constant.lo
-       -rm -f gnu/xml/xpath/ContainsFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/ContainsFunction.lo
-       -rm -f gnu/xml/xpath/CountFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/CountFunction.lo
-       -rm -f gnu/xml/xpath/DocumentOrderComparator.$(OBJEXT)
-       -rm -f gnu/xml/xpath/DocumentOrderComparator.lo
-       -rm -f gnu/xml/xpath/EqualityExpr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/EqualityExpr.lo
-       -rm -f gnu/xml/xpath/Expr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Expr.lo
-       -rm -f gnu/xml/xpath/FalseFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/FalseFunction.lo
-       -rm -f gnu/xml/xpath/FloorFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/FloorFunction.lo
-       -rm -f gnu/xml/xpath/Function.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Function.lo
-       -rm -f gnu/xml/xpath/FunctionCall.$(OBJEXT)
-       -rm -f gnu/xml/xpath/FunctionCall.lo
-       -rm -f gnu/xml/xpath/IdFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/IdFunction.lo
-       -rm -f gnu/xml/xpath/LangFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/LangFunction.lo
-       -rm -f gnu/xml/xpath/LastFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/LastFunction.lo
-       -rm -f gnu/xml/xpath/LocalNameFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/LocalNameFunction.lo
-       -rm -f gnu/xml/xpath/NameFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NameFunction.lo
-       -rm -f gnu/xml/xpath/NameTest.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NameTest.lo
-       -rm -f gnu/xml/xpath/NamespaceTest.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NamespaceTest.lo
-       -rm -f gnu/xml/xpath/NamespaceUriFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NamespaceUriFunction.lo
-       -rm -f gnu/xml/xpath/NegativeExpr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NegativeExpr.lo
-       -rm -f gnu/xml/xpath/NodeTypeTest.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NodeTypeTest.lo
-       -rm -f gnu/xml/xpath/NormalizeSpaceFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NormalizeSpaceFunction.lo
-       -rm -f gnu/xml/xpath/NotFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NotFunction.lo
-       -rm -f gnu/xml/xpath/NumberFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/NumberFunction.lo
-       -rm -f gnu/xml/xpath/OrExpr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/OrExpr.lo
-       -rm -f gnu/xml/xpath/ParenthesizedExpr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/ParenthesizedExpr.lo
-       -rm -f gnu/xml/xpath/Path.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Path.lo
-       -rm -f gnu/xml/xpath/Pattern.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Pattern.lo
-       -rm -f gnu/xml/xpath/PositionFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/PositionFunction.lo
-       -rm -f gnu/xml/xpath/Predicate.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Predicate.lo
-       -rm -f gnu/xml/xpath/RelationalExpr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/RelationalExpr.lo
-       -rm -f gnu/xml/xpath/Root.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Root.lo
-       -rm -f gnu/xml/xpath/RoundFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/RoundFunction.lo
-       -rm -f gnu/xml/xpath/Selector.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Selector.lo
-       -rm -f gnu/xml/xpath/StartsWithFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/StartsWithFunction.lo
-       -rm -f gnu/xml/xpath/Steps.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Steps.lo
-       -rm -f gnu/xml/xpath/StringFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/StringFunction.lo
-       -rm -f gnu/xml/xpath/StringLengthFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/StringLengthFunction.lo
-       -rm -f gnu/xml/xpath/SubstringAfterFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/SubstringAfterFunction.lo
-       -rm -f gnu/xml/xpath/SubstringBeforeFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/SubstringBeforeFunction.lo
-       -rm -f gnu/xml/xpath/SubstringFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/SubstringFunction.lo
-       -rm -f gnu/xml/xpath/SumFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/SumFunction.lo
-       -rm -f gnu/xml/xpath/Test.$(OBJEXT)
-       -rm -f gnu/xml/xpath/Test.lo
-       -rm -f gnu/xml/xpath/TranslateFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/TranslateFunction.lo
-       -rm -f gnu/xml/xpath/TrueFunction.$(OBJEXT)
-       -rm -f gnu/xml/xpath/TrueFunction.lo
-       -rm -f gnu/xml/xpath/UnionExpr.$(OBJEXT)
-       -rm -f gnu/xml/xpath/UnionExpr.lo
-       -rm -f gnu/xml/xpath/VariableReference.$(OBJEXT)
-       -rm -f gnu/xml/xpath/VariableReference.lo
-       -rm -f gnu/xml/xpath/XPathFactoryImpl.$(OBJEXT)
-       -rm -f gnu/xml/xpath/XPathFactoryImpl.lo
-       -rm -f gnu/xml/xpath/XPathImpl.$(OBJEXT)
-       -rm -f gnu/xml/xpath/XPathImpl.lo
-       -rm -f gnu/xml/xpath/XPathParser.$(OBJEXT)
-       -rm -f gnu/xml/xpath/XPathParser.lo
-       -rm -f gnu/xml/xpath/XPathTokenizer.$(OBJEXT)
-       -rm -f gnu/xml/xpath/XPathTokenizer.lo
        -rm -f java/applet/Applet.$(OBJEXT)
        -rm -f java/applet/Applet.lo
        -rm -f java/applet/AppletContext.$(OBJEXT)
@@ -20210,98 +18265,6 @@ mostlyclean-compile:
        -rm -f javax/crypto/spec/RC5ParameterSpec.lo
        -rm -f javax/crypto/spec/SecretKeySpec.$(OBJEXT)
        -rm -f javax/crypto/spec/SecretKeySpec.lo
-       -rm -f javax/imageio/IIOException.$(OBJEXT)
-       -rm -f javax/imageio/IIOException.lo
-       -rm -f javax/imageio/IIOImage.$(OBJEXT)
-       -rm -f javax/imageio/IIOImage.lo
-       -rm -f javax/imageio/IIOParam.$(OBJEXT)
-       -rm -f javax/imageio/IIOParam.lo
-       -rm -f javax/imageio/IIOParamController.$(OBJEXT)
-       -rm -f javax/imageio/IIOParamController.lo
-       -rm -f javax/imageio/ImageIO.$(OBJEXT)
-       -rm -f javax/imageio/ImageIO.lo
-       -rm -f javax/imageio/ImageReadParam.$(OBJEXT)
-       -rm -f javax/imageio/ImageReadParam.lo
-       -rm -f javax/imageio/ImageReader.$(OBJEXT)
-       -rm -f javax/imageio/ImageReader.lo
-       -rm -f javax/imageio/ImageTranscoder.$(OBJEXT)
-       -rm -f javax/imageio/ImageTranscoder.lo
-       -rm -f javax/imageio/ImageTypeSpecifier.$(OBJEXT)
-       -rm -f javax/imageio/ImageTypeSpecifier.lo
-       -rm -f javax/imageio/ImageWriteParam.$(OBJEXT)
-       -rm -f javax/imageio/ImageWriteParam.lo
-       -rm -f javax/imageio/ImageWriter.$(OBJEXT)
-       -rm -f javax/imageio/ImageWriter.lo
-       -rm -f javax/imageio/event/IIOReadProgressListener.$(OBJEXT)
-       -rm -f javax/imageio/event/IIOReadProgressListener.lo
-       -rm -f javax/imageio/event/IIOReadUpdateListener.$(OBJEXT)
-       -rm -f javax/imageio/event/IIOReadUpdateListener.lo
-       -rm -f javax/imageio/event/IIOReadWarningListener.$(OBJEXT)
-       -rm -f javax/imageio/event/IIOReadWarningListener.lo
-       -rm -f javax/imageio/event/IIOWriteProgressListener.$(OBJEXT)
-       -rm -f javax/imageio/event/IIOWriteProgressListener.lo
-       -rm -f javax/imageio/event/IIOWriteWarningListener.$(OBJEXT)
-       -rm -f javax/imageio/event/IIOWriteWarningListener.lo
-       -rm -f javax/imageio/metadata/IIOAttr.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIOAttr.lo
-       -rm -f javax/imageio/metadata/IIOInvalidTreeException.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIOInvalidTreeException.lo
-       -rm -f javax/imageio/metadata/IIOMetadata.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIOMetadata.lo
-       -rm -f javax/imageio/metadata/IIOMetadataController.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIOMetadataController.lo
-       -rm -f javax/imageio/metadata/IIOMetadataFormat.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIOMetadataFormat.lo
-       -rm -f javax/imageio/metadata/IIOMetadataFormatImpl.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIOMetadataFormatImpl.lo
-       -rm -f javax/imageio/metadata/IIOMetadataNode.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIOMetadataNode.lo
-       -rm -f javax/imageio/metadata/IIONamedNodeMap.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIONamedNodeMap.lo
-       -rm -f javax/imageio/metadata/IIONodeList.$(OBJEXT)
-       -rm -f javax/imageio/metadata/IIONodeList.lo
-       -rm -f javax/imageio/spi/IIORegistry.$(OBJEXT)
-       -rm -f javax/imageio/spi/IIORegistry.lo
-       -rm -f javax/imageio/spi/IIOServiceProvider.$(OBJEXT)
-       -rm -f javax/imageio/spi/IIOServiceProvider.lo
-       -rm -f javax/imageio/spi/ImageInputStreamSpi.$(OBJEXT)
-       -rm -f javax/imageio/spi/ImageInputStreamSpi.lo
-       -rm -f javax/imageio/spi/ImageOutputStreamSpi.$(OBJEXT)
-       -rm -f javax/imageio/spi/ImageOutputStreamSpi.lo
-       -rm -f javax/imageio/spi/ImageReaderSpi.$(OBJEXT)
-       -rm -f javax/imageio/spi/ImageReaderSpi.lo
-       -rm -f javax/imageio/spi/ImageReaderWriterSpi.$(OBJEXT)
-       -rm -f javax/imageio/spi/ImageReaderWriterSpi.lo
-       -rm -f javax/imageio/spi/ImageTranscoderSpi.$(OBJEXT)
-       -rm -f javax/imageio/spi/ImageTranscoderSpi.lo
-       -rm -f javax/imageio/spi/ImageWriterSpi.$(OBJEXT)
-       -rm -f javax/imageio/spi/ImageWriterSpi.lo
-       -rm -f javax/imageio/spi/RegisterableService.$(OBJEXT)
-       -rm -f javax/imageio/spi/RegisterableService.lo
-       -rm -f javax/imageio/spi/ServiceRegistry.$(OBJEXT)
-       -rm -f javax/imageio/spi/ServiceRegistry.lo
-       -rm -f javax/imageio/stream/FileCacheImageInputStream.$(OBJEXT)
-       -rm -f javax/imageio/stream/FileCacheImageInputStream.lo
-       -rm -f javax/imageio/stream/FileCacheImageOutputStream.$(OBJEXT)
-       -rm -f javax/imageio/stream/FileCacheImageOutputStream.lo
-       -rm -f javax/imageio/stream/FileImageInputStream.$(OBJEXT)
-       -rm -f javax/imageio/stream/FileImageInputStream.lo
-       -rm -f javax/imageio/stream/FileImageOutputStream.$(OBJEXT)
-       -rm -f javax/imageio/stream/FileImageOutputStream.lo
-       -rm -f javax/imageio/stream/IIOByteBuffer.$(OBJEXT)
-       -rm -f javax/imageio/stream/IIOByteBuffer.lo
-       -rm -f javax/imageio/stream/ImageInputStream.$(OBJEXT)
-       -rm -f javax/imageio/stream/ImageInputStream.lo
-       -rm -f javax/imageio/stream/ImageInputStreamImpl.$(OBJEXT)
-       -rm -f javax/imageio/stream/ImageInputStreamImpl.lo
-       -rm -f javax/imageio/stream/ImageOutputStream.$(OBJEXT)
-       -rm -f javax/imageio/stream/ImageOutputStream.lo
-       -rm -f javax/imageio/stream/ImageOutputStreamImpl.$(OBJEXT)
-       -rm -f javax/imageio/stream/ImageOutputStreamImpl.lo
-       -rm -f javax/imageio/stream/MemoryCacheImageInputStream.$(OBJEXT)
-       -rm -f javax/imageio/stream/MemoryCacheImageInputStream.lo
-       -rm -f javax/imageio/stream/MemoryCacheImageOutputStream.$(OBJEXT)
-       -rm -f javax/imageio/stream/MemoryCacheImageOutputStream.lo
        -rm -f javax/naming/AuthenticationException.$(OBJEXT)
        -rm -f javax/naming/AuthenticationException.lo
        -rm -f javax/naming/AuthenticationNotSupportedException.$(OBJEXT)
@@ -21664,110 +19627,6 @@ mostlyclean-compile:
        -rm -f javax/transaction/xa/XAResource.lo
        -rm -f javax/transaction/xa/Xid.$(OBJEXT)
        -rm -f javax/transaction/xa/Xid.lo
-       -rm -f javax/xml/XMLConstants.$(OBJEXT)
-       -rm -f javax/xml/XMLConstants.lo
-       -rm -f javax/xml/datatype/DatatypeConfigurationException.$(OBJEXT)
-       -rm -f javax/xml/datatype/DatatypeConfigurationException.lo
-       -rm -f javax/xml/datatype/DatatypeConstants.$(OBJEXT)
-       -rm -f javax/xml/datatype/DatatypeConstants.lo
-       -rm -f javax/xml/datatype/DatatypeFactory.$(OBJEXT)
-       -rm -f javax/xml/datatype/DatatypeFactory.lo
-       -rm -f javax/xml/datatype/Duration.$(OBJEXT)
-       -rm -f javax/xml/datatype/Duration.lo
-       -rm -f javax/xml/datatype/XMLGregorianCalendar.$(OBJEXT)
-       -rm -f javax/xml/datatype/XMLGregorianCalendar.lo
-       -rm -f javax/xml/namespace/NamespaceContext.$(OBJEXT)
-       -rm -f javax/xml/namespace/NamespaceContext.lo
-       -rm -f javax/xml/namespace/QName.$(OBJEXT)
-       -rm -f javax/xml/namespace/QName.lo
-       -rm -f javax/xml/parsers/DocumentBuilder.$(OBJEXT)
-       -rm -f javax/xml/parsers/DocumentBuilder.lo
-       -rm -f javax/xml/parsers/DocumentBuilderFactory.$(OBJEXT)
-       -rm -f javax/xml/parsers/DocumentBuilderFactory.lo
-       -rm -f javax/xml/parsers/FactoryConfigurationError.$(OBJEXT)
-       -rm -f javax/xml/parsers/FactoryConfigurationError.lo
-       -rm -f javax/xml/parsers/ParserConfigurationException.$(OBJEXT)
-       -rm -f javax/xml/parsers/ParserConfigurationException.lo
-       -rm -f javax/xml/parsers/SAXParser.$(OBJEXT)
-       -rm -f javax/xml/parsers/SAXParser.lo
-       -rm -f javax/xml/parsers/SAXParserFactory.$(OBJEXT)
-       -rm -f javax/xml/parsers/SAXParserFactory.lo
-       -rm -f javax/xml/transform/ErrorListener.$(OBJEXT)
-       -rm -f javax/xml/transform/ErrorListener.lo
-       -rm -f javax/xml/transform/OutputKeys.$(OBJEXT)
-       -rm -f javax/xml/transform/OutputKeys.lo
-       -rm -f javax/xml/transform/Result.$(OBJEXT)
-       -rm -f javax/xml/transform/Result.lo
-       -rm -f javax/xml/transform/Source.$(OBJEXT)
-       -rm -f javax/xml/transform/Source.lo
-       -rm -f javax/xml/transform/SourceLocator.$(OBJEXT)
-       -rm -f javax/xml/transform/SourceLocator.lo
-       -rm -f javax/xml/transform/Templates.$(OBJEXT)
-       -rm -f javax/xml/transform/Templates.lo
-       -rm -f javax/xml/transform/Transformer.$(OBJEXT)
-       -rm -f javax/xml/transform/Transformer.lo
-       -rm -f javax/xml/transform/TransformerConfigurationException.$(OBJEXT)
-       -rm -f javax/xml/transform/TransformerConfigurationException.lo
-       -rm -f javax/xml/transform/TransformerException.$(OBJEXT)
-       -rm -f javax/xml/transform/TransformerException.lo
-       -rm -f javax/xml/transform/TransformerFactory.$(OBJEXT)
-       -rm -f javax/xml/transform/TransformerFactory.lo
-       -rm -f javax/xml/transform/TransformerFactoryConfigurationError.$(OBJEXT)
-       -rm -f javax/xml/transform/TransformerFactoryConfigurationError.lo
-       -rm -f javax/xml/transform/URIResolver.$(OBJEXT)
-       -rm -f javax/xml/transform/URIResolver.lo
-       -rm -f javax/xml/transform/dom/DOMLocator.$(OBJEXT)
-       -rm -f javax/xml/transform/dom/DOMLocator.lo
-       -rm -f javax/xml/transform/dom/DOMResult.$(OBJEXT)
-       -rm -f javax/xml/transform/dom/DOMResult.lo
-       -rm -f javax/xml/transform/dom/DOMSource.$(OBJEXT)
-       -rm -f javax/xml/transform/dom/DOMSource.lo
-       -rm -f javax/xml/transform/sax/SAXResult.$(OBJEXT)
-       -rm -f javax/xml/transform/sax/SAXResult.lo
-       -rm -f javax/xml/transform/sax/SAXSource.$(OBJEXT)
-       -rm -f javax/xml/transform/sax/SAXSource.lo
-       -rm -f javax/xml/transform/sax/SAXTransformerFactory.$(OBJEXT)
-       -rm -f javax/xml/transform/sax/SAXTransformerFactory.lo
-       -rm -f javax/xml/transform/sax/TemplatesHandler.$(OBJEXT)
-       -rm -f javax/xml/transform/sax/TemplatesHandler.lo
-       -rm -f javax/xml/transform/sax/TransformerHandler.$(OBJEXT)
-       -rm -f javax/xml/transform/sax/TransformerHandler.lo
-       -rm -f javax/xml/transform/stream/StreamResult.$(OBJEXT)
-       -rm -f javax/xml/transform/stream/StreamResult.lo
-       -rm -f javax/xml/transform/stream/StreamSource.$(OBJEXT)
-       -rm -f javax/xml/transform/stream/StreamSource.lo
-       -rm -f javax/xml/validation/Schema.$(OBJEXT)
-       -rm -f javax/xml/validation/Schema.lo
-       -rm -f javax/xml/validation/SchemaFactory.$(OBJEXT)
-       -rm -f javax/xml/validation/SchemaFactory.lo
-       -rm -f javax/xml/validation/TypeInfoProvider.$(OBJEXT)
-       -rm -f javax/xml/validation/TypeInfoProvider.lo
-       -rm -f javax/xml/validation/Validator.$(OBJEXT)
-       -rm -f javax/xml/validation/Validator.lo
-       -rm -f javax/xml/validation/ValidatorHandler.$(OBJEXT)
-       -rm -f javax/xml/validation/ValidatorHandler.lo
-       -rm -f javax/xml/xpath/XPath.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPath.lo
-       -rm -f javax/xml/xpath/XPathConstants.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathConstants.lo
-       -rm -f javax/xml/xpath/XPathException.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathException.lo
-       -rm -f javax/xml/xpath/XPathExpression.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathExpression.lo
-       -rm -f javax/xml/xpath/XPathExpressionException.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathExpressionException.lo
-       -rm -f javax/xml/xpath/XPathFactory.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathFactory.lo
-       -rm -f javax/xml/xpath/XPathFactoryConfigurationException.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathFactoryConfigurationException.lo
-       -rm -f javax/xml/xpath/XPathFunction.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathFunction.lo
-       -rm -f javax/xml/xpath/XPathFunctionException.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathFunctionException.lo
-       -rm -f javax/xml/xpath/XPathFunctionResolver.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathFunctionResolver.lo
-       -rm -f javax/xml/xpath/XPathVariableResolver.$(OBJEXT)
-       -rm -f javax/xml/xpath/XPathVariableResolver.lo
        -rm -f jni/classpath/lib_gnu_java_awt_peer_gtk_la-native_state.$(OBJEXT)
        -rm -f jni/classpath/lib_gnu_java_awt_peer_gtk_la-native_state.lo
        -rm -f jni/gtk-peer/lib_gnu_java_awt_peer_gtk_la-gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.$(OBJEXT)
@@ -21948,6 +19807,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/io/$(DEPDIR)/SimpleSHSStream.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/io/$(DEPDIR)/natSimpleSHSStream.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/io/$(DEPDIR)/shs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/runtime/$(DEPDIR)/BootClassLoader.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/runtime/$(DEPDIR)/FileDeleter.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/runtime/$(DEPDIR)/FinalizerThread.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/runtime/$(DEPDIR)/JNIWeakRef.Plo@am__quote@
@@ -22080,58 +19940,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/awt/peer/gtk/$(DEPDIR)/lib_gnu_java_awt_peer_gtk_la-GtkTextFieldPeer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/awt/peer/gtk/$(DEPDIR)/lib_gnu_java_awt_peer_gtk_la-GtkToolkit.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/awt/peer/gtk/$(DEPDIR)/lib_gnu_java_awt_peer_gtk_la-GtkWindowPeer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/$(DEPDIR)/BeanInfoEmbryo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/$(DEPDIR)/DummyAppletContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/$(DEPDIR)/DummyAppletStub.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/$(DEPDIR)/ExplicitBeanInfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/$(DEPDIR)/IntrospectionIncubator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/AbstractContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/AbstractCreatableObjectContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/AbstractElementHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/AbstractObjectContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ArrayContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ArrayHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/AssemblyException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/BooleanHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ByteHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/CharHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ClassHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ConstructorContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/Context.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/DecoderContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/DefaultExceptionListener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/DoubleHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/DummyContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/DummyHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ElementHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/FloatHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/GrowableArrayContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/IndexContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/IntHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/JavaHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/LongHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/MethodContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/MethodFinder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/NullHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ObjectContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ObjectHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/PersistenceParser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/PropertyContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/ShortHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/SimpleHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/StaticMethodContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/StringHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/decoder/$(DEPDIR)/VoidHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/ColorEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/FontEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/NativeBooleanEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/NativeByteEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/NativeDoubleEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/NativeFloatEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/NativeIntEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/NativeLongEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/NativeShortEditor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/beans/editors/$(DEPDIR)/StringEditor.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/io/$(DEPDIR)/ASN1ParsingException.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/io/$(DEPDIR)/Base64InputStream.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/java/io/$(DEPDIR)/ClassLoaderObjectInputStream.Plo@am__quote@
@@ -22520,180 +20328,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/regexp/$(DEPDIR)/RETokenStart.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/regexp/$(DEPDIR)/RETokenWordBoundary.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gnu/regexp/$(DEPDIR)/UncheckedRE.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/aelfred2/$(DEPDIR)/ContentHandler2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/aelfred2/$(DEPDIR)/JAXPFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/aelfred2/$(DEPDIR)/SAXDriver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/aelfred2/$(DEPDIR)/XmlParser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/aelfred2/$(DEPDIR)/XmlReader.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/Consumer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DTDAttributeTypeInfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DTDElementTypeInfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomAttr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomCDATASection.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomCharacterData.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomComment.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomDOMException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomDoctype.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomDocument.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomDocumentBuilder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomDocumentBuilderFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomDocumentConfiguration.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomDocumentFragment.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomEntity.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomEntityReference.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomEvent.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomExtern.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomIterator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomNSResolverContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomNamedNodeMap.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomNodeIterator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomNotation.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomNsNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomProcessingInstruction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomText.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomXPathExpression.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomXPathNSResolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/DomXPathResult.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/ImplementationList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/ImplementationSource.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/$(DEPDIR)/JAXPFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/DomLSException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/DomLSInput.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/DomLSOutput.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/DomLSParser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/DomLSSerializer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/FilteredSAXEventSink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/ReaderInputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/SAXEventSink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/dom/ls/$(DEPDIR)/WriterOutputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/CallFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/DomConsumer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/EventConsumer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/EventFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/LinkFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/NSFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/PipelineFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/TeeConsumer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/TextConsumer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/ValidationConsumer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/WellFormednessFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/XIncludeFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/pipeline/$(DEPDIR)/XsltFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/AbstractNumberNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ApplyImportsNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ApplyTemplatesNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/AttributeNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/AttributeSet.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/Bindings.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/CallTemplateNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ChooseNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/CommentNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/CopyNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/CopyOfNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/CurrentFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/DOMSourceLocator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/DocumentFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ElementAvailableFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ElementNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ErrorListenerErrorHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ForEachNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/FormatNumberFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/FunctionAvailableFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/GenerateIdFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/IfNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/Key.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/KeyFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/LiteralNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/MessageNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/NodeNumberNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/NumberNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/OtherwiseNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ParameterNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ProcessingInstructionNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/SAXSerializer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/SortKey.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/StreamSerializer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/Stylesheet.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/SystemPropertyFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/Template.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/TemplateNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/TemplatesImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/TextNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/TransformerFactoryImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/TransformerImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/TransformerOutputProperties.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/URIResolverEntityResolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/UnparsedEntityUriFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/ValueOfNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/WhenNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/WithParam.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/XSLComparator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/transform/$(DEPDIR)/XSLURIResolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/util/$(DEPDIR)/DoParse.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/util/$(DEPDIR)/DomParser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/util/$(DEPDIR)/Resolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/util/$(DEPDIR)/SAXNullTransformerFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/util/$(DEPDIR)/XCat.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/util/$(DEPDIR)/XHTMLWriter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/util/$(DEPDIR)/XMLWriter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/AndExpr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/ArithmeticExpr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/BooleanFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/CeilingFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/ConcatFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Constant.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/ContainsFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/CountFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/DocumentOrderComparator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/EqualityExpr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Expr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/FalseFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/FloorFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Function.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/FunctionCall.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/IdFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/LangFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/LastFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/LocalNameFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NameFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NameTest.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NamespaceTest.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NamespaceUriFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NegativeExpr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NodeTypeTest.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NormalizeSpaceFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NotFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/NumberFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/OrExpr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/ParenthesizedExpr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Path.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Pattern.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/PositionFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Predicate.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/RelationalExpr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Root.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/RoundFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Selector.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/StartsWithFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Steps.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/StringFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/StringLengthFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/SubstringAfterFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/SubstringBeforeFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/SubstringFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/SumFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/Test.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/TranslateFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/TrueFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/UnionExpr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/VariableReference.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/XPathFactoryImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/XPathImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/XPathParser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gnu/xml/xpath/$(DEPDIR)/XPathTokenizer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@java/applet/$(DEPDIR)/Applet.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@java/applet/$(DEPDIR)/AppletContext.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@java/applet/$(DEPDIR)/AppletStub.Plo@am__quote@
@@ -23890,52 +21524,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@javax/crypto/spec/$(DEPDIR)/RC2ParameterSpec.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@javax/crypto/spec/$(DEPDIR)/RC5ParameterSpec.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@javax/crypto/spec/$(DEPDIR)/SecretKeySpec.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/IIOException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/IIOImage.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/IIOParam.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/IIOParamController.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/ImageIO.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/ImageReadParam.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/ImageReader.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/ImageTranscoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/ImageTypeSpecifier.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/ImageWriteParam.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/$(DEPDIR)/ImageWriter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/event/$(DEPDIR)/IIOReadProgressListener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/event/$(DEPDIR)/IIOReadUpdateListener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/event/$(DEPDIR)/IIOReadWarningListener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/event/$(DEPDIR)/IIOWriteProgressListener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/event/$(DEPDIR)/IIOWriteWarningListener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIOAttr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIOInvalidTreeException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIOMetadata.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIOMetadataController.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIOMetadataFormat.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIOMetadataFormatImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIOMetadataNode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIONamedNodeMap.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/metadata/$(DEPDIR)/IIONodeList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/IIORegistry.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/IIOServiceProvider.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/ImageInputStreamSpi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/ImageOutputStreamSpi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/ImageReaderSpi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/ImageReaderWriterSpi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/ImageTranscoderSpi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/ImageWriterSpi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/RegisterableService.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/spi/$(DEPDIR)/ServiceRegistry.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/FileCacheImageInputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/FileCacheImageOutputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/FileImageInputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/FileImageOutputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/IIOByteBuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/ImageInputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/ImageInputStreamImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/ImageOutputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/ImageOutputStreamImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/MemoryCacheImageInputStream.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/imageio/stream/$(DEPDIR)/MemoryCacheImageOutputStream.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@javax/naming/$(DEPDIR)/AuthenticationException.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@javax/naming/$(DEPDIR)/AuthenticationNotSupportedException.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@javax/naming/$(DEPDIR)/BinaryRefAddr.Plo@am__quote@
@@ -24617,58 +22205,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@javax/transaction/xa/$(DEPDIR)/XAException.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@javax/transaction/xa/$(DEPDIR)/XAResource.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@javax/transaction/xa/$(DEPDIR)/Xid.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/$(DEPDIR)/XMLConstants.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/datatype/$(DEPDIR)/DatatypeConfigurationException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/datatype/$(DEPDIR)/DatatypeConstants.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/datatype/$(DEPDIR)/DatatypeFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/datatype/$(DEPDIR)/Duration.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/datatype/$(DEPDIR)/XMLGregorianCalendar.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/namespace/$(DEPDIR)/NamespaceContext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/namespace/$(DEPDIR)/QName.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/parsers/$(DEPDIR)/DocumentBuilder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/parsers/$(DEPDIR)/DocumentBuilderFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/parsers/$(DEPDIR)/FactoryConfigurationError.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/parsers/$(DEPDIR)/ParserConfigurationException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/parsers/$(DEPDIR)/SAXParser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/parsers/$(DEPDIR)/SAXParserFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/ErrorListener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/OutputKeys.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/Result.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/Source.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/SourceLocator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/Templates.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/Transformer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/TransformerConfigurationException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/TransformerException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/TransformerFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/TransformerFactoryConfigurationError.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/$(DEPDIR)/URIResolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/dom/$(DEPDIR)/DOMLocator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/dom/$(DEPDIR)/DOMResult.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/dom/$(DEPDIR)/DOMSource.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/sax/$(DEPDIR)/SAXResult.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/sax/$(DEPDIR)/SAXSource.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/sax/$(DEPDIR)/SAXTransformerFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/sax/$(DEPDIR)/TemplatesHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/sax/$(DEPDIR)/TransformerHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/stream/$(DEPDIR)/StreamResult.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/transform/stream/$(DEPDIR)/StreamSource.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/validation/$(DEPDIR)/Schema.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/validation/$(DEPDIR)/SchemaFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/validation/$(DEPDIR)/TypeInfoProvider.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/validation/$(DEPDIR)/Validator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/validation/$(DEPDIR)/ValidatorHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPath.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathConstants.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathExpression.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathExpressionException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathFactoryConfigurationException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathFunction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathFunctionException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathFunctionResolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@javax/xml/xpath/$(DEPDIR)/XPathVariableResolver.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@jni/classpath/$(DEPDIR)/lib_gnu_java_awt_peer_gtk_la-native_state.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@jni/gtk-peer/$(DEPDIR)/lib_gnu_java_awt_peer_gtk_la-gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@jni/gtk-peer/$(DEPDIR)/lib_gnu_java_awt_peer_gtk_la-gnu_java_awt_peer_gtk_GdkFontPeer.Plo@am__quote@
@@ -25553,9 +23089,6 @@ clean-libtool:
        -rm -rf gnu/java/awt/image/.libs gnu/java/awt/image/_libs
        -rm -rf gnu/java/awt/peer/.libs gnu/java/awt/peer/_libs
        -rm -rf gnu/java/awt/peer/gtk/.libs gnu/java/awt/peer/gtk/_libs
-       -rm -rf gnu/java/beans/.libs gnu/java/beans/_libs
-       -rm -rf gnu/java/beans/decoder/.libs gnu/java/beans/decoder/_libs
-       -rm -rf gnu/java/beans/editors/.libs gnu/java/beans/editors/_libs
        -rm -rf gnu/java/io/.libs gnu/java/io/_libs
        -rm -rf gnu/java/lang/.libs gnu/java/lang/_libs
        -rm -rf gnu/java/lang/reflect/.libs gnu/java/lang/reflect/_libs
@@ -25590,13 +23123,6 @@ clean-libtool:
        -rm -rf gnu/java/util/.libs gnu/java/util/_libs
        -rm -rf gnu/java/util/prefs/.libs gnu/java/util/prefs/_libs
        -rm -rf gnu/regexp/.libs gnu/regexp/_libs
-       -rm -rf gnu/xml/aelfred2/.libs gnu/xml/aelfred2/_libs
-       -rm -rf gnu/xml/dom/.libs gnu/xml/dom/_libs
-       -rm -rf gnu/xml/dom/ls/.libs gnu/xml/dom/ls/_libs
-       -rm -rf gnu/xml/pipeline/.libs gnu/xml/pipeline/_libs
-       -rm -rf gnu/xml/transform/.libs gnu/xml/transform/_libs
-       -rm -rf gnu/xml/util/.libs gnu/xml/util/_libs
-       -rm -rf gnu/xml/xpath/.libs gnu/xml/xpath/_libs
        -rm -rf java/applet/.libs java/applet/_libs
        -rm -rf java/awt/.libs java/awt/_libs
        -rm -rf java/awt/color/.libs java/awt/color/_libs
@@ -25647,11 +23173,6 @@ clean-libtool:
        -rm -rf javax/crypto/.libs javax/crypto/_libs
        -rm -rf javax/crypto/interfaces/.libs javax/crypto/interfaces/_libs
        -rm -rf javax/crypto/spec/.libs javax/crypto/spec/_libs
-       -rm -rf javax/imageio/.libs javax/imageio/_libs
-       -rm -rf javax/imageio/event/.libs javax/imageio/event/_libs
-       -rm -rf javax/imageio/metadata/.libs javax/imageio/metadata/_libs
-       -rm -rf javax/imageio/spi/.libs javax/imageio/spi/_libs
-       -rm -rf javax/imageio/stream/.libs javax/imageio/stream/_libs
        -rm -rf javax/naming/.libs javax/naming/_libs
        -rm -rf javax/naming/directory/.libs javax/naming/directory/_libs
        -rm -rf javax/naming/event/.libs javax/naming/event/_libs
@@ -25687,16 +23208,6 @@ clean-libtool:
        -rm -rf javax/swing/undo/.libs javax/swing/undo/_libs
        -rm -rf javax/transaction/.libs javax/transaction/_libs
        -rm -rf javax/transaction/xa/.libs javax/transaction/xa/_libs
-       -rm -rf javax/xml/.libs javax/xml/_libs
-       -rm -rf javax/xml/datatype/.libs javax/xml/datatype/_libs
-       -rm -rf javax/xml/namespace/.libs javax/xml/namespace/_libs
-       -rm -rf javax/xml/parsers/.libs javax/xml/parsers/_libs
-       -rm -rf javax/xml/transform/.libs javax/xml/transform/_libs
-       -rm -rf javax/xml/transform/dom/.libs javax/xml/transform/dom/_libs
-       -rm -rf javax/xml/transform/sax/.libs javax/xml/transform/sax/_libs
-       -rm -rf javax/xml/transform/stream/.libs javax/xml/transform/stream/_libs
-       -rm -rf javax/xml/validation/.libs javax/xml/validation/_libs
-       -rm -rf javax/xml/xpath/.libs javax/xml/xpath/_libs
        -rm -rf jni/classpath/.libs jni/classpath/_libs
        -rm -rf jni/gtk-peer/.libs jni/gtk-peer/_libs
        -rm -rf org/ietf/jgss/.libs org/ietf/jgss/_libs
@@ -25781,13 +23292,7 @@ uninstall-toolexecmainlibDATA:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-       @failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
+       @set fnord $$MAKEFLAGS; amf=$$2; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
        list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -25799,7 +23304,7 @@ $(RECURSIVE_TARGETS):
            local_target="$$target"; \
          fi; \
          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
        done; \
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -25807,13 +23312,7 @@ $(RECURSIVE_TARGETS):
 
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-       @failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
+       @set fnord $$MAKEFLAGS; amf=$$2; \
        dot_seen=no; \
        case "$@" in \
          distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -25834,7 +23333,7 @@ maintainer-clean-recursive:
            local_target="$$target"; \
          fi; \
          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
        done && test -z "$$fail"
 tags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -26109,12 +23608,6 @@ distclean-generic:
        -rm -f gnu/java/awt/peer/$(am__dirstamp)
        -rm -f gnu/java/awt/peer/gtk/$(DEPDIR)/$(am__dirstamp)
        -rm -f gnu/java/awt/peer/gtk/$(am__dirstamp)
-       -rm -f gnu/java/beans/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/java/beans/$(am__dirstamp)
-       -rm -f gnu/java/beans/decoder/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/java/beans/decoder/$(am__dirstamp)
-       -rm -f gnu/java/beans/editors/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/java/beans/editors/$(am__dirstamp)
        -rm -f gnu/java/io/$(DEPDIR)/$(am__dirstamp)
        -rm -f gnu/java/io/$(am__dirstamp)
        -rm -f gnu/java/lang/$(DEPDIR)/$(am__dirstamp)
@@ -26183,20 +23676,6 @@ distclean-generic:
        -rm -f gnu/java/util/prefs/$(am__dirstamp)
        -rm -f gnu/regexp/$(DEPDIR)/$(am__dirstamp)
        -rm -f gnu/regexp/$(am__dirstamp)
-       -rm -f gnu/xml/aelfred2/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/xml/aelfred2/$(am__dirstamp)
-       -rm -f gnu/xml/dom/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/xml/dom/$(am__dirstamp)
-       -rm -f gnu/xml/dom/ls/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/xml/dom/ls/$(am__dirstamp)
-       -rm -f gnu/xml/pipeline/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/xml/pipeline/$(am__dirstamp)
-       -rm -f gnu/xml/transform/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/xml/transform/$(am__dirstamp)
-       -rm -f gnu/xml/util/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/xml/util/$(am__dirstamp)
-       -rm -f gnu/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-       -rm -f gnu/xml/xpath/$(am__dirstamp)
        -rm -f java/applet/$(DEPDIR)/$(am__dirstamp)
        -rm -f java/applet/$(am__dirstamp)
        -rm -f java/awt/$(DEPDIR)/$(am__dirstamp)
@@ -26297,16 +23776,6 @@ distclean-generic:
        -rm -f javax/crypto/interfaces/$(am__dirstamp)
        -rm -f javax/crypto/spec/$(DEPDIR)/$(am__dirstamp)
        -rm -f javax/crypto/spec/$(am__dirstamp)
-       -rm -f javax/imageio/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/imageio/$(am__dirstamp)
-       -rm -f javax/imageio/event/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/imageio/event/$(am__dirstamp)
-       -rm -f javax/imageio/metadata/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/imageio/metadata/$(am__dirstamp)
-       -rm -f javax/imageio/spi/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/imageio/spi/$(am__dirstamp)
-       -rm -f javax/imageio/stream/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/imageio/stream/$(am__dirstamp)
        -rm -f javax/naming/$(DEPDIR)/$(am__dirstamp)
        -rm -f javax/naming/$(am__dirstamp)
        -rm -f javax/naming/directory/$(DEPDIR)/$(am__dirstamp)
@@ -26377,26 +23846,6 @@ distclean-generic:
        -rm -f javax/transaction/$(am__dirstamp)
        -rm -f javax/transaction/xa/$(DEPDIR)/$(am__dirstamp)
        -rm -f javax/transaction/xa/$(am__dirstamp)
-       -rm -f javax/xml/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/$(am__dirstamp)
-       -rm -f javax/xml/datatype/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/datatype/$(am__dirstamp)
-       -rm -f javax/xml/namespace/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/namespace/$(am__dirstamp)
-       -rm -f javax/xml/parsers/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/parsers/$(am__dirstamp)
-       -rm -f javax/xml/transform/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/transform/$(am__dirstamp)
-       -rm -f javax/xml/transform/dom/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/transform/dom/$(am__dirstamp)
-       -rm -f javax/xml/transform/sax/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/transform/sax/$(am__dirstamp)
-       -rm -f javax/xml/transform/stream/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/transform/stream/$(am__dirstamp)
-       -rm -f javax/xml/validation/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/validation/$(am__dirstamp)
-       -rm -f javax/xml/xpath/$(DEPDIR)/$(am__dirstamp)
-       -rm -f javax/xml/xpath/$(am__dirstamp)
        -rm -f jni/classpath/$(DEPDIR)/$(am__dirstamp)
        -rm -f jni/classpath/$(am__dirstamp)
        -rm -f jni/gtk-peer/$(DEPDIR)/$(am__dirstamp)
@@ -26417,7 +23866,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \
 
 distclean: distclean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf ./$(DEPDIR) gnu/awt/$(DEPDIR) gnu/awt/j2d/$(DEPDIR) gnu/awt/xlib/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/awt/$(DEPDIR) gnu/java/awt/color/$(DEPDIR) gnu/java/awt/image/$(DEPDIR) gnu/java/awt/peer/$(DEPDIR) gnu/java/awt/peer/gtk/$(DEPDIR) gnu/java/beans/$(DEPDIR) gnu/java/beans/decoder/$(DEPDIR) gnu/java/beans/editors/$(DEPDIR) gnu/java/io/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/reflect/$(DEPDIR) gnu/java/locale/$(DEPDIR) gnu/java/math/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/net/protocol/file/$(DEPDIR) gnu/java/net/protocol/ftp/$(DEPDIR) gnu/java/net/protocol/gcjlib/$(DEPDIR) gnu/java/net/protocol/http/$(DEPDIR) gnu/java/net/protocol/http/event/$(DEPDIR) gnu/java/net/protocol/jar/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/nio/charset/$(DEPDIR) gnu/java/rmi/$(DEPDIR) gnu/java/rmi/dgc/$(DEPDIR) gnu/java/rmi/registry/$(DEPDIR) gnu/java/rmi/rmic/$(DEPDIR) gnu/java/rmi/server/$(DEPDIR) gnu/java/security/$(DEPDIR) gnu/java/security/action/$(DEPDIR) gnu/java/security/ber/$(DEPDIR) gnu/java/security/der/$(DEPDIR) gnu/java/security/pkcs/$(DEPDIR) gnu/java/security/provider/$(DEPDIR) gnu/java/security/util/$(DEPDIR) gnu/java/security/x509/$(DEPDIR) gnu/java/security/x509/ext/$(DEPDIR) gnu/java/text/$(DEPDIR) gnu/java/util/$(DEPDIR) gnu/java/util/prefs/$(DEPDIR) gnu/regexp/$(DEPDIR) gnu/xml/aelfred2/$(DEPDIR) gnu/xml/dom/$(DEPDIR) gnu/xml/dom/ls/$(DEPDIR) gnu/xml/pipeline/$(DEPDIR) gnu/xml/transform/$(DEPDIR) gnu/xml/util/$(DEPDIR) gnu/xml/xpath/$(DEPDIR) java/applet/$(DEPDIR) java/awt/$(DEPDIR) java/awt/color/$(DEPDIR) java/awt/datatransfer/$(DEPDIR) java/awt/dnd/$(DEPDIR) java/awt/dnd/peer/$(DEPDIR) java/awt/event/$(DEPDIR) java/awt/font/$(DEPDIR) java/awt/geom/$(DEPDIR) java/awt/im/$(DEPDIR) java/awt/im/spi/$(DEPDIR) java/awt/image/$(DEPDIR) java/awt/image/renderable/$(DEPDIR) java/awt/peer/$(DEPDIR) java/awt/print/$(DEPDIR) java/beans/$(DEPDIR) java/beans/beancontext/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/math/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/nio/channels/spi/$(DEPDIR) java/nio/charset/$(DEPDIR) java/nio/charset/spi/$(DEPDIR) java/rmi/$(DEPDIR) java/rmi/activation/$(DEPDIR) java/rmi/dgc/$(DEPDIR) java/rmi/registry/$(DEPDIR) java/rmi/server/$(DEPDIR) java/security/$(DEPDIR) java/security/acl/$(DEPDIR) java/security/cert/$(DEPDIR) java/security/interfaces/$(DEPDIR) java/security/spec/$(DEPDIR) java/sql/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/jar/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/prefs/$(DEPDIR) java/util/regex/$(DEPDIR) java/util/zip/$(DEPDIR) javax/accessibility/$(DEPDIR) javax/crypto/$(DEPDIR) javax/crypto/interfaces/$(DEPDIR) javax/crypto/spec/$(DEPDIR) javax/imageio/$(DEPDIR) javax/imageio/event/$(DEPDIR) javax/imageio/metadata/$(DEPDIR) javax/imageio/spi/$(DEPDIR) javax/imageio/stream/$(DEPDIR) javax/naming/$(DEPDIR) javax/naming/directory/$(DEPDIR) javax/naming/event/$(DEPDIR) javax/naming/ldap/$(DEPDIR) javax/naming/spi/$(DEPDIR) javax/net/$(DEPDIR) javax/net/ssl/$(DEPDIR) javax/print/$(DEPDIR) javax/print/attribute/$(DEPDIR) javax/print/attribute/standard/$(DEPDIR) javax/print/event/$(DEPDIR) javax/security/auth/$(DEPDIR) javax/security/auth/callback/$(DEPDIR) javax/security/auth/login/$(DEPDIR) javax/security/auth/spi/$(DEPDIR) javax/security/auth/x500/$(DEPDIR) javax/security/cert/$(DEPDIR) javax/security/sasl/$(DEPDIR) javax/sql/$(DEPDIR) javax/swing/$(DEPDIR) javax/swing/border/$(DEPDIR) javax/swing/colorchooser/$(DEPDIR) javax/swing/event/$(DEPDIR) javax/swing/filechooser/$(DEPDIR) javax/swing/plaf/$(DEPDIR) javax/swing/plaf/basic/$(DEPDIR) javax/swing/plaf/metal/$(DEPDIR) javax/swing/table/$(DEPDIR) javax/swing/text/$(DEPDIR) javax/swing/text/html/$(DEPDIR) javax/swing/text/html/parser/$(DEPDIR) javax/swing/tree/$(DEPDIR) javax/swing/undo/$(DEPDIR) javax/transaction/$(DEPDIR) javax/transaction/xa/$(DEPDIR) javax/xml/$(DEPDIR) javax/xml/datatype/$(DEPDIR) javax/xml/namespace/$(DEPDIR) javax/xml/parsers/$(DEPDIR) javax/xml/transform/$(DEPDIR) javax/xml/transform/dom/$(DEPDIR) javax/xml/transform/sax/$(DEPDIR) javax/xml/transform/stream/$(DEPDIR) javax/xml/validation/$(DEPDIR) javax/xml/xpath/$(DEPDIR) jni/classpath/$(DEPDIR) jni/gtk-peer/$(DEPDIR) org/ietf/jgss/$(DEPDIR) sysdep/$(DEPDIR)
+       -rm -rf ./$(DEPDIR) gnu/awt/$(DEPDIR) gnu/awt/j2d/$(DEPDIR) gnu/awt/xlib/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/awt/$(DEPDIR) gnu/java/awt/color/$(DEPDIR) gnu/java/awt/image/$(DEPDIR) gnu/java/awt/peer/$(DEPDIR) gnu/java/awt/peer/gtk/$(DEPDIR) gnu/java/io/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/reflect/$(DEPDIR) gnu/java/locale/$(DEPDIR) gnu/java/math/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/net/protocol/file/$(DEPDIR) gnu/java/net/protocol/ftp/$(DEPDIR) gnu/java/net/protocol/gcjlib/$(DEPDIR) gnu/java/net/protocol/http/$(DEPDIR) gnu/java/net/protocol/http/event/$(DEPDIR) gnu/java/net/protocol/jar/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/nio/charset/$(DEPDIR) gnu/java/rmi/$(DEPDIR) gnu/java/rmi/dgc/$(DEPDIR) gnu/java/rmi/registry/$(DEPDIR) gnu/java/rmi/rmic/$(DEPDIR) gnu/java/rmi/server/$(DEPDIR) gnu/java/security/$(DEPDIR) gnu/java/security/action/$(DEPDIR) gnu/java/security/ber/$(DEPDIR) gnu/java/security/der/$(DEPDIR) gnu/java/security/pkcs/$(DEPDIR) gnu/java/security/provider/$(DEPDIR) gnu/java/security/util/$(DEPDIR) gnu/java/security/x509/$(DEPDIR) gnu/java/security/x509/ext/$(DEPDIR) gnu/java/text/$(DEPDIR) gnu/java/util/$(DEPDIR) gnu/java/util/prefs/$(DEPDIR) gnu/regexp/$(DEPDIR) java/applet/$(DEPDIR) java/awt/$(DEPDIR) java/awt/color/$(DEPDIR) java/awt/datatransfer/$(DEPDIR) java/awt/dnd/$(DEPDIR) java/awt/dnd/peer/$(DEPDIR) java/awt/event/$(DEPDIR) java/awt/font/$(DEPDIR) java/awt/geom/$(DEPDIR) java/awt/im/$(DEPDIR) java/awt/im/spi/$(DEPDIR) java/awt/image/$(DEPDIR) java/awt/image/renderable/$(DEPDIR) java/awt/peer/$(DEPDIR) java/awt/print/$(DEPDIR) java/beans/$(DEPDIR) java/beans/beancontext/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/math/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/nio/channels/spi/$(DEPDIR) java/nio/charset/$(DEPDIR) java/nio/charset/spi/$(DEPDIR) java/rmi/$(DEPDIR) java/rmi/activation/$(DEPDIR) java/rmi/dgc/$(DEPDIR) java/rmi/registry/$(DEPDIR) java/rmi/server/$(DEPDIR) java/security/$(DEPDIR) java/security/acl/$(DEPDIR) java/security/cert/$(DEPDIR) java/security/interfaces/$(DEPDIR) java/security/spec/$(DEPDIR) java/sql/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/jar/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/prefs/$(DEPDIR) java/util/regex/$(DEPDIR) java/util/zip/$(DEPDIR) javax/accessibility/$(DEPDIR) javax/crypto/$(DEPDIR) javax/crypto/interfaces/$(DEPDIR) javax/crypto/spec/$(DEPDIR) javax/naming/$(DEPDIR) javax/naming/directory/$(DEPDIR) javax/naming/event/$(DEPDIR) javax/naming/ldap/$(DEPDIR) javax/naming/spi/$(DEPDIR) javax/net/$(DEPDIR) javax/net/ssl/$(DEPDIR) javax/print/$(DEPDIR) javax/print/attribute/$(DEPDIR) javax/print/attribute/standard/$(DEPDIR) javax/print/event/$(DEPDIR) javax/security/auth/$(DEPDIR) javax/security/auth/callback/$(DEPDIR) javax/security/auth/login/$(DEPDIR) javax/security/auth/spi/$(DEPDIR) javax/security/auth/x500/$(DEPDIR) javax/security/cert/$(DEPDIR) javax/security/sasl/$(DEPDIR) javax/sql/$(DEPDIR) javax/swing/$(DEPDIR) javax/swing/border/$(DEPDIR) javax/swing/colorchooser/$(DEPDIR) javax/swing/event/$(DEPDIR) javax/swing/filechooser/$(DEPDIR) javax/swing/plaf/$(DEPDIR) javax/swing/plaf/basic/$(DEPDIR) javax/swing/plaf/metal/$(DEPDIR) javax/swing/table/$(DEPDIR) javax/swing/text/$(DEPDIR) javax/swing/text/html/$(DEPDIR) javax/swing/text/html/parser/$(DEPDIR) javax/swing/tree/$(DEPDIR) javax/swing/undo/$(DEPDIR) javax/transaction/$(DEPDIR) javax/transaction/xa/$(DEPDIR) jni/classpath/$(DEPDIR) jni/gtk-peer/$(DEPDIR) org/ietf/jgss/$(DEPDIR) sysdep/$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-libtool distclean-local distclean-tags
@@ -26448,7 +23897,7 @@ installcheck-am:
 maintainer-clean: maintainer-clean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
        -rm -rf $(top_srcdir)/autom4te.cache
-       -rm -rf ./$(DEPDIR) gnu/awt/$(DEPDIR) gnu/awt/j2d/$(DEPDIR) gnu/awt/xlib/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/awt/$(DEPDIR) gnu/java/awt/color/$(DEPDIR) gnu/java/awt/image/$(DEPDIR) gnu/java/awt/peer/$(DEPDIR) gnu/java/awt/peer/gtk/$(DEPDIR) gnu/java/beans/$(DEPDIR) gnu/java/beans/decoder/$(DEPDIR) gnu/java/beans/editors/$(DEPDIR) gnu/java/io/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/reflect/$(DEPDIR) gnu/java/locale/$(DEPDIR) gnu/java/math/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/net/protocol/file/$(DEPDIR) gnu/java/net/protocol/ftp/$(DEPDIR) gnu/java/net/protocol/gcjlib/$(DEPDIR) gnu/java/net/protocol/http/$(DEPDIR) gnu/java/net/protocol/http/event/$(DEPDIR) gnu/java/net/protocol/jar/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/nio/charset/$(DEPDIR) gnu/java/rmi/$(DEPDIR) gnu/java/rmi/dgc/$(DEPDIR) gnu/java/rmi/registry/$(DEPDIR) gnu/java/rmi/rmic/$(DEPDIR) gnu/java/rmi/server/$(DEPDIR) gnu/java/security/$(DEPDIR) gnu/java/security/action/$(DEPDIR) gnu/java/security/ber/$(DEPDIR) gnu/java/security/der/$(DEPDIR) gnu/java/security/pkcs/$(DEPDIR) gnu/java/security/provider/$(DEPDIR) gnu/java/security/util/$(DEPDIR) gnu/java/security/x509/$(DEPDIR) gnu/java/security/x509/ext/$(DEPDIR) gnu/java/text/$(DEPDIR) gnu/java/util/$(DEPDIR) gnu/java/util/prefs/$(DEPDIR) gnu/regexp/$(DEPDIR) gnu/xml/aelfred2/$(DEPDIR) gnu/xml/dom/$(DEPDIR) gnu/xml/dom/ls/$(DEPDIR) gnu/xml/pipeline/$(DEPDIR) gnu/xml/transform/$(DEPDIR) gnu/xml/util/$(DEPDIR) gnu/xml/xpath/$(DEPDIR) java/applet/$(DEPDIR) java/awt/$(DEPDIR) java/awt/color/$(DEPDIR) java/awt/datatransfer/$(DEPDIR) java/awt/dnd/$(DEPDIR) java/awt/dnd/peer/$(DEPDIR) java/awt/event/$(DEPDIR) java/awt/font/$(DEPDIR) java/awt/geom/$(DEPDIR) java/awt/im/$(DEPDIR) java/awt/im/spi/$(DEPDIR) java/awt/image/$(DEPDIR) java/awt/image/renderable/$(DEPDIR) java/awt/peer/$(DEPDIR) java/awt/print/$(DEPDIR) java/beans/$(DEPDIR) java/beans/beancontext/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/math/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/nio/channels/spi/$(DEPDIR) java/nio/charset/$(DEPDIR) java/nio/charset/spi/$(DEPDIR) java/rmi/$(DEPDIR) java/rmi/activation/$(DEPDIR) java/rmi/dgc/$(DEPDIR) java/rmi/registry/$(DEPDIR) java/rmi/server/$(DEPDIR) java/security/$(DEPDIR) java/security/acl/$(DEPDIR) java/security/cert/$(DEPDIR) java/security/interfaces/$(DEPDIR) java/security/spec/$(DEPDIR) java/sql/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/jar/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/prefs/$(DEPDIR) java/util/regex/$(DEPDIR) java/util/zip/$(DEPDIR) javax/accessibility/$(DEPDIR) javax/crypto/$(DEPDIR) javax/crypto/interfaces/$(DEPDIR) javax/crypto/spec/$(DEPDIR) javax/imageio/$(DEPDIR) javax/imageio/event/$(DEPDIR) javax/imageio/metadata/$(DEPDIR) javax/imageio/spi/$(DEPDIR) javax/imageio/stream/$(DEPDIR) javax/naming/$(DEPDIR) javax/naming/directory/$(DEPDIR) javax/naming/event/$(DEPDIR) javax/naming/ldap/$(DEPDIR) javax/naming/spi/$(DEPDIR) javax/net/$(DEPDIR) javax/net/ssl/$(DEPDIR) javax/print/$(DEPDIR) javax/print/attribute/$(DEPDIR) javax/print/attribute/standard/$(DEPDIR) javax/print/event/$(DEPDIR) javax/security/auth/$(DEPDIR) javax/security/auth/callback/$(DEPDIR) javax/security/auth/login/$(DEPDIR) javax/security/auth/spi/$(DEPDIR) javax/security/auth/x500/$(DEPDIR) javax/security/cert/$(DEPDIR) javax/security/sasl/$(DEPDIR) javax/sql/$(DEPDIR) javax/swing/$(DEPDIR) javax/swing/border/$(DEPDIR) javax/swing/colorchooser/$(DEPDIR) javax/swing/event/$(DEPDIR) javax/swing/filechooser/$(DEPDIR) javax/swing/plaf/$(DEPDIR) javax/swing/plaf/basic/$(DEPDIR) javax/swing/plaf/metal/$(DEPDIR) javax/swing/table/$(DEPDIR) javax/swing/text/$(DEPDIR) javax/swing/text/html/$(DEPDIR) javax/swing/text/html/parser/$(DEPDIR) javax/swing/tree/$(DEPDIR) javax/swing/undo/$(DEPDIR) javax/transaction/$(DEPDIR) javax/transaction/xa/$(DEPDIR) javax/xml/$(DEPDIR) javax/xml/datatype/$(DEPDIR) javax/xml/namespace/$(DEPDIR) javax/xml/parsers/$(DEPDIR) javax/xml/transform/$(DEPDIR) javax/xml/transform/dom/$(DEPDIR) javax/xml/transform/sax/$(DEPDIR) javax/xml/transform/stream/$(DEPDIR) javax/xml/validation/$(DEPDIR) javax/xml/xpath/$(DEPDIR) jni/classpath/$(DEPDIR) jni/gtk-peer/$(DEPDIR) org/ietf/jgss/$(DEPDIR) sysdep/$(DEPDIR)
+       -rm -rf ./$(DEPDIR) gnu/awt/$(DEPDIR) gnu/awt/j2d/$(DEPDIR) gnu/awt/xlib/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/awt/$(DEPDIR) gnu/java/awt/color/$(DEPDIR) gnu/java/awt/image/$(DEPDIR) gnu/java/awt/peer/$(DEPDIR) gnu/java/awt/peer/gtk/$(DEPDIR) gnu/java/io/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/reflect/$(DEPDIR) gnu/java/locale/$(DEPDIR) gnu/java/math/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/net/protocol/file/$(DEPDIR) gnu/java/net/protocol/ftp/$(DEPDIR) gnu/java/net/protocol/gcjlib/$(DEPDIR) gnu/java/net/protocol/http/$(DEPDIR) gnu/java/net/protocol/http/event/$(DEPDIR) gnu/java/net/protocol/jar/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/nio/charset/$(DEPDIR) gnu/java/rmi/$(DEPDIR) gnu/java/rmi/dgc/$(DEPDIR) gnu/java/rmi/registry/$(DEPDIR) gnu/java/rmi/rmic/$(DEPDIR) gnu/java/rmi/server/$(DEPDIR) gnu/java/security/$(DEPDIR) gnu/java/security/action/$(DEPDIR) gnu/java/security/ber/$(DEPDIR) gnu/java/security/der/$(DEPDIR) gnu/java/security/pkcs/$(DEPDIR) gnu/java/security/provider/$(DEPDIR) gnu/java/security/util/$(DEPDIR) gnu/java/security/x509/$(DEPDIR) gnu/java/security/x509/ext/$(DEPDIR) gnu/java/text/$(DEPDIR) gnu/java/util/$(DEPDIR) gnu/java/util/prefs/$(DEPDIR) gnu/regexp/$(DEPDIR) java/applet/$(DEPDIR) java/awt/$(DEPDIR) java/awt/color/$(DEPDIR) java/awt/datatransfer/$(DEPDIR) java/awt/dnd/$(DEPDIR) java/awt/dnd/peer/$(DEPDIR) java/awt/event/$(DEPDIR) java/awt/font/$(DEPDIR) java/awt/geom/$(DEPDIR) java/awt/im/$(DEPDIR) java/awt/im/spi/$(DEPDIR) java/awt/image/$(DEPDIR) java/awt/image/renderable/$(DEPDIR) java/awt/peer/$(DEPDIR) java/awt/print/$(DEPDIR) java/beans/$(DEPDIR) java/beans/beancontext/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/math/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/nio/channels/spi/$(DEPDIR) java/nio/charset/$(DEPDIR) java/nio/charset/spi/$(DEPDIR) java/rmi/$(DEPDIR) java/rmi/activation/$(DEPDIR) java/rmi/dgc/$(DEPDIR) java/rmi/registry/$(DEPDIR) java/rmi/server/$(DEPDIR) java/security/$(DEPDIR) java/security/acl/$(DEPDIR) java/security/cert/$(DEPDIR) java/security/interfaces/$(DEPDIR) java/security/spec/$(DEPDIR) java/sql/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/jar/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/prefs/$(DEPDIR) java/util/regex/$(DEPDIR) java/util/zip/$(DEPDIR) javax/accessibility/$(DEPDIR) javax/crypto/$(DEPDIR) javax/crypto/interfaces/$(DEPDIR) javax/crypto/spec/$(DEPDIR) javax/naming/$(DEPDIR) javax/naming/directory/$(DEPDIR) javax/naming/event/$(DEPDIR) javax/naming/ldap/$(DEPDIR) javax/naming/spi/$(DEPDIR) javax/net/$(DEPDIR) javax/net/ssl/$(DEPDIR) javax/print/$(DEPDIR) javax/print/attribute/$(DEPDIR) javax/print/attribute/standard/$(DEPDIR) javax/print/event/$(DEPDIR) javax/security/auth/$(DEPDIR) javax/security/auth/callback/$(DEPDIR) javax/security/auth/login/$(DEPDIR) javax/security/auth/spi/$(DEPDIR) javax/security/auth/x500/$(DEPDIR) javax/security/cert/$(DEPDIR) javax/security/sasl/$(DEPDIR) javax/sql/$(DEPDIR) javax/swing/$(DEPDIR) javax/swing/border/$(DEPDIR) javax/swing/colorchooser/$(DEPDIR) javax/swing/event/$(DEPDIR) javax/swing/filechooser/$(DEPDIR) javax/swing/plaf/$(DEPDIR) javax/swing/plaf/basic/$(DEPDIR) javax/swing/plaf/metal/$(DEPDIR) javax/swing/table/$(DEPDIR) javax/swing/text/$(DEPDIR) javax/swing/text/html/$(DEPDIR) javax/swing/text/html/parser/$(DEPDIR) javax/swing/tree/$(DEPDIR) javax/swing/undo/$(DEPDIR) javax/transaction/$(DEPDIR) javax/transaction/xa/$(DEPDIR) jni/classpath/$(DEPDIR) jni/gtk-peer/$(DEPDIR) org/ietf/jgss/$(DEPDIR) sysdep/$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -26648,7 +24097,7 @@ clean-nat:
 $(javao_files) $(xlib_javao_files): %.lo: %.java
        $(LTGCJCOMPILE) -o $@ -c $<
 
-$(gtk_awt_peer_sources:.java=.lo) $(gnu_xml_source_files:.java=.lo): %.lo: %.java
+$(gtk_awt_peer_sources:.java=.lo): %.lo: %.java
        $(LTGCJCOMPILE) -fjni -o $@ -c $<
 
 libgcj.la: $(libgcj_la_OBJECTS) $(libgcj_la_DEPENDENCIES)
@@ -26664,6 +24113,26 @@ lib-gnu-awt-xlib.la: $(lib_gnu_awt_xlib_la_OBJECTS) $(lib_gnu_awt_xlib_la_DEPEND
        $(lib_gnu_awt_xlib_la_LINK) -objectlist lib_gnu_awt_xlib.objectlist \
        -rpath $(toolexeclibdir) $(lib_gnu_awt_xlib_la_LDFLAGS) $(LIBS)
 
+gnu-xml.lo: $(gnu_xml_source_files)
+       $(MAKE) classes.stamp
+       $(LTGCJCOMPILE) -fjni -findirect-dispatch -c -o gnu-xml.lo \
+               `find gnu/xml -name '*.class' -print`
+
+javax-imageio.lo: $(javax_imageio_source_files)
+       $(MAKE) classes.stamp
+       $(LTGCJCOMPILE) -findirect-dispatch -c -o javax-imageio.lo \
+               `find javax/imageio -name '*.class' -print`
+
+javax-xml.lo: $(javax_xml_source_files)
+       $(MAKE) classes.stamp
+       $(LTGCJCOMPILE) -findirect-dispatch -c -o javax-xml.lo \
+               `find javax/xml -name '*.class' -print`
+
+gnu-java-beans.lo: $(gnu_java_beans_source_files)
+       $(MAKE) classes.stamp
+       $(LTGCJCOMPILE) -findirect-dispatch -c -o gnu-java-beans.lo \
+               `find gnu/java/beans -name '*.class' -print`
+
 %.h: %.class
        $(GCJH) -classpath '' -bootclasspath $(top_builddir) $(basename $<)
 
index 286f26a..32840e5 100644 (file)
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.3 -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005  Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
-# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+#                                                        -*- Autoconf -*-
+# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
+# Generated from amversion.in; do not edit by hand.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
@@ -28,15 +40,26 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-        [AM_AUTOMAKE_VERSION([1.9.5])])
+        [AM_AUTOMAKE_VERSION([1.9.3])])
 
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+# AM_AUX_DIR_EXPAND
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
 
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
 # $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
@@ -83,16 +106,26 @@ AC_PREREQ([2.50])dnl
 am_aux_dir=`cd $ac_aux_dir && pwd`
 ])
 
-# AM_CONDITIONAL                                            -*- Autoconf -*-
+# AM_CONDITIONAL                                              -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
 
-# serial 7
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 6
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
@@ -116,15 +149,26 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
+# serial 7                                             -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
 
-# serial 8
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
 
 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
@@ -133,6 +177,7 @@ fi])])
 # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
 
 
+
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
@@ -272,16 +317,27 @@ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])
 ])
 
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
+# Generate code to set up dependency tracking.   -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+#   Free Software Foundation, Inc.
 
-#serial 3
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+#serial 2
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
@@ -340,14 +396,25 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
      [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
 ])
 
-# Check for Java compiler.                                  -*- Autoconf -*-
+# Check for Java compiler.
 # For now we only handle the GNU compiler.
 
-# Copyright (C) 1999, 2000, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
 
 AC_DEFUN([AM_PROG_GCJ],[
 AC_CHECK_PROGS(GCJ, gcj, gcj)
@@ -359,19 +426,30 @@ AC_SUBST(GCJFLAGS)
 _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(GCJ)])
 ])
 
-# Do all the work for Automake.                             -*- Autoconf -*-
+# Do all the work for Automake.                            -*- Autoconf -*-
+
+# This macro actually does too much some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
 
-# serial 12
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
 
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 11
 
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
@@ -473,27 +551,51 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 install_sh=${install_sh-"$am_aux_dir/install-sh"}
 AC_SUBST(install_sh)])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+#                                                          -*- Autoconf -*-
+# Copyright (C) 2003  Free Software Foundation, Inc.
 
-# serial 2
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
 
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
@@ -508,17 +610,28 @@ fi
 rmdir .tst 2>/dev/null
 AC_SUBST([am__leading_dot])])
 
-# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# Add --enable-maintainer-mode option to configure.
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
 
-# serial 4
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
 
 AC_DEFUN([AM_MAINTAINER_MODE],
 [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
@@ -537,15 +650,26 @@ AC_DEFUN([AM_MAINTAINER_MODE],
 
 AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
-# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+# Check to see how 'make' treats includes.     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
 
-# serial 3
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
 
 # AM_MAKE_INCLUDE()
 # -----------------
@@ -589,17 +713,29 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999, 2000, 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 3
+# serial 2
 
 # AM_PROG_CC_C_O
 # --------------
 # Like AC_PROG_CC_C_O, but changed for automake.
+
+# Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
 AC_DEFUN([AM_PROG_CC_C_O],
 [AC_REQUIRE([AC_PROG_CC_C_O])dnl
 AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
@@ -617,16 +753,27 @@ if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
 fi
 ])
 
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+#  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
 
-# serial 4
+# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
 
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
@@ -652,16 +799,27 @@ else
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
 # AM_PROG_MKDIR_P
 # ---------------
 # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-#
+
+# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
 # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
 # created by `make install' are always world readable, even if the
 # installer happens to have an overly restrictive umask (e.g. 077).
@@ -715,15 +873,26 @@ else
 fi
 AC_SUBST([mkdir_p])])
 
-# Helper functions for option handling.                     -*- Autoconf -*-
+# Helper functions for option handling.                    -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
 
-# serial 3
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -748,16 +917,28 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
 #
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Check to make sure that the build environment is sane.
+#
 
-# serial 4
+# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
 
 # AM_SANITY_CHECK
 # ---------------
@@ -800,14 +981,25 @@ Check your system clock])
 fi
 AC_MSG_RESULT(yes)])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
 # AM_PROG_INSTALL_STRIP
-# ---------------------
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
 # One issue with vendor `install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
@@ -830,13 +1022,25 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# Copyright (C) 2004  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
 
-# serial 2
 
 # _AM_PROG_TAR(FORMAT)
 # --------------------
index 57f7c07..86248b2 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.3 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -382,13 +382,7 @@ uninstall-info-am:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-       @failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
+       @set fnord $$MAKEFLAGS; amf=$$2; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
        list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -400,7 +394,7 @@ $(RECURSIVE_TARGETS):
            local_target="$$target"; \
          fi; \
          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
        done; \
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -408,13 +402,7 @@ $(RECURSIVE_TARGETS):
 
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive:
-       @failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
+       @set fnord $$MAKEFLAGS; amf=$$2; \
        dot_seen=no; \
        case "$@" in \
          distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -435,7 +423,7 @@ maintainer-clean-recursive:
            local_target="$$target"; \
          fi; \
          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
        done && test -z "$$fail"
 tags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
index 41760e5..d4bdf59 100644 (file)
@@ -5,6 +5,9 @@ AUTOMAKE_OPTIONS = foreign subdir-objects
 # May be used by various substitution variables.
 gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
 
+## Needed because $(ZIP) is a relative path.
+MULTIBUILDTOP = ../../
+
 ## The compiler with whatever flags we want for both -c and -C
 ## compiles.
 GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated -fbootclasspath=$(BOOTCLASSPATH)
@@ -20,18 +23,24 @@ AM_GCJFLAGS = \
 
 BUILT_SOURCES = classes.stamp
 
-classes.stamp: $(libsax_convenience_la_SOURCES)
+sax.jar: classes.stamp
+       find org -name '*.class' -print | $(ZIP) -cfME@ $@
+
+classes.stamp: $(source_files)
        here=`pwd`; cd $(srcdir); \
-       $(GCJ_WITH_FLAGS) -C -d $$here $(libsax_convenience_la_SOURCES)
+       $(GCJ_WITH_FLAGS) -C -d $$here $(source_files)
        echo > classes.stamp
 
 mostlyclean-local:
        -find . -name '*.class' | xargs rm
-       -rm classes.stamp
+       -rm classes.stamp sax.jar
+
+toolexeclib_LTLIBRARIES = libsax-gcj.la
 
-noinst_LTLIBRARIES = libsax_convenience.la
+libsax_gcj_la_SOURCES =        sax.jar
+libsax_gcj_la_GCJFLAGS = -findirect-dispatch
 
-libsax_convenience_la_SOURCES =        \
+source_files = \
 org/xml/sax/SAXNotSupportedException.java \
 org/xml/sax/helpers/NamespaceSupport.java \
 org/xml/sax/helpers/AttributesImpl.java        \
index 88bac22..6ca3c62 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.3 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,7 +14,7 @@
 
 @SET_MAKE@
 
-SOURCES = $(libsax_convenience_la_SOURCES)
+SOURCES = $(libsax_gcj_la_SOURCES)
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -58,38 +58,18 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 CONFIG_HEADER = $(top_builddir)/include/config.h \
        $(top_builddir)/gcj/libgcj-config.h
 CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libsax_convenience_la_LIBADD =
-am__dirstamp = $(am__leading_dot)dirstamp
-am_libsax_convenience_la_OBJECTS =  \
-       org/xml/sax/SAXNotSupportedException.lo \
-       org/xml/sax/helpers/NamespaceSupport.lo \
-       org/xml/sax/helpers/AttributesImpl.lo \
-       org/xml/sax/helpers/LocatorImpl.lo \
-       org/xml/sax/helpers/DefaultHandler.lo \
-       org/xml/sax/helpers/AttributeListImpl.lo \
-       org/xml/sax/helpers/ParserFactory.lo \
-       org/xml/sax/helpers/NewInstance.lo \
-       org/xml/sax/helpers/XMLFilterImpl.lo \
-       org/xml/sax/helpers/ParserAdapter.lo \
-       org/xml/sax/helpers/XMLReaderAdapter.lo \
-       org/xml/sax/helpers/XMLReaderFactory.lo \
-       org/xml/sax/HandlerBase.lo org/xml/sax/SAXException.lo \
-       org/xml/sax/ContentHandler.lo \
-       org/xml/sax/SAXNotRecognizedException.lo \
-       org/xml/sax/ErrorHandler.lo org/xml/sax/AttributeList.lo \
-       org/xml/sax/Locator.lo org/xml/sax/Attributes.lo \
-       org/xml/sax/SAXParseException.lo org/xml/sax/XMLFilter.lo \
-       org/xml/sax/EntityResolver.lo org/xml/sax/XMLReader.lo \
-       org/xml/sax/ext/Locator2.lo org/xml/sax/ext/LexicalHandler.lo \
-       org/xml/sax/ext/Attributes2Impl.lo \
-       org/xml/sax/ext/DeclHandler.lo org/xml/sax/ext/Attributes2.lo \
-       org/xml/sax/ext/EntityResolver2.lo \
-       org/xml/sax/ext/Locator2Impl.lo \
-       org/xml/sax/ext/DefaultHandler2.lo org/xml/sax/InputSource.lo \
-       org/xml/sax/DocumentHandler.lo org/xml/sax/DTDHandler.lo \
-       org/xml/sax/Parser.lo
-libsax_convenience_la_OBJECTS = $(am_libsax_convenience_la_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
+toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
+libsax_gcj_la_LIBADD =
+am_libsax_gcj_la_OBJECTS = libsax_gcj_la-sax.lo
+libsax_gcj_la_OBJECTS = $(am_libsax_gcj_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_builddir)/gcj
 depcomp = $(SHELL) $(top_srcdir)/../depcomp
 am__depfiles_maybe = depfiles
@@ -99,8 +79,8 @@ LTGCJCOMPILE = $(LIBTOOL) --mode=compile $(GCJ) $(AM_GCJFLAGS) \
 GCJLD = $(GCJ)
 GCJLINK = $(LIBTOOL) --mode=link $(GCJLD) $(AM_GCJFLAGS) $(GCJFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libsax_convenience_la_SOURCES)
-DIST_SOURCES = $(libsax_convenience_la_SOURCES)
+SOURCES = $(libsax_gcj_la_SOURCES)
+DIST_SOURCES = $(libsax_gcj_la_SOURCES)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -327,6 +307,7 @@ AUTOMAKE_OPTIONS = foreign subdir-objects
 
 # May be used by various substitution variables.
 gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+MULTIBUILDTOP = ../../
 GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated -fbootclasspath=$(BOOTCLASSPATH)
 BOOTCLASSPATH = $(here)'$(CLASSPATH_SEPARATOR)'$(srcdir)'$(CLASSPATH_SEPARATOR)'$(top_srcdir)'$(CLASSPATH_SEPARATOR)'$(top_builddir)
 AM_GCJFLAGS = \
@@ -337,8 +318,10 @@ AM_GCJFLAGS = \
        -Wno-deprecated
 
 BUILT_SOURCES = classes.stamp
-noinst_LTLIBRARIES = libsax_convenience.la
-libsax_convenience_la_SOURCES = \
+toolexeclib_LTLIBRARIES = libsax-gcj.la
+libsax_gcj_la_SOURCES = sax.jar
+libsax_gcj_la_GCJFLAGS = -findirect-dispatch
+source_files = \
 org/xml/sax/SAXNotSupportedException.java \
 org/xml/sax/helpers/NamespaceSupport.java \
 org/xml/sax/helpers/AttributesImpl.java        \
@@ -380,7 +363,7 @@ all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .java .lo .o .obj
+.SUFFIXES: .jar .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -410,235 +393,45 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(toolexeclibdir)" || $(mkdir_p) "$(DESTDIR)$(toolexeclibdir)"
+       @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+         if test -f $$p; then \
+           f=$(am__strip_dir) \
+           echo " $(LIBTOOL) --mode=install $(toolexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
+           $(LIBTOOL) --mode=install $(toolexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(toolexeclibdir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-toolexeclibLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @set -x; list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+         p=$(am__strip_dir) \
+         echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$p'"; \
+         $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$p"; \
+       done
 
-clean-noinstLTLIBRARIES:
-       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+clean-toolexeclibLTLIBRARIES:
+       -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+       @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
          dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
          test "$$dir" != "$$p" || dir=.; \
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
-org/xml/sax/$(am__dirstamp):
-       @$(mkdir_p) org/xml/sax
-       @: > org/xml/sax/$(am__dirstamp)
-org/xml/sax/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/xml/sax/$(DEPDIR)
-       @: > org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/SAXNotSupportedException.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/$(am__dirstamp):
-       @$(mkdir_p) org/xml/sax/helpers
-       @: > org/xml/sax/helpers/$(am__dirstamp)
-org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/xml/sax/helpers/$(DEPDIR)
-       @: > org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/NamespaceSupport.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/AttributesImpl.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/LocatorImpl.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/DefaultHandler.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/AttributeListImpl.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/ParserFactory.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/NewInstance.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/XMLFilterImpl.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/ParserAdapter.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/XMLReaderAdapter.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/helpers/XMLReaderFactory.lo:  \
-       org/xml/sax/helpers/$(am__dirstamp) \
-       org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/HandlerBase.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/SAXException.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ContentHandler.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/SAXNotRecognizedException.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ErrorHandler.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/AttributeList.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/Locator.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/Attributes.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/SAXParseException.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/XMLFilter.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/EntityResolver.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/XMLReader.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/$(am__dirstamp):
-       @$(mkdir_p) org/xml/sax/ext
-       @: > org/xml/sax/ext/$(am__dirstamp)
-org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/xml/sax/ext/$(DEPDIR)
-       @: > org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/Locator2.lo: org/xml/sax/ext/$(am__dirstamp) \
-       org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/LexicalHandler.lo: org/xml/sax/ext/$(am__dirstamp) \
-       org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/Attributes2Impl.lo: org/xml/sax/ext/$(am__dirstamp) \
-       org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/DeclHandler.lo: org/xml/sax/ext/$(am__dirstamp) \
-       org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/Attributes2.lo: org/xml/sax/ext/$(am__dirstamp) \
-       org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/EntityResolver2.lo: org/xml/sax/ext/$(am__dirstamp) \
-       org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/Locator2Impl.lo: org/xml/sax/ext/$(am__dirstamp) \
-       org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/ext/DefaultHandler2.lo: org/xml/sax/ext/$(am__dirstamp) \
-       org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/InputSource.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/DocumentHandler.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/DTDHandler.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-org/xml/sax/Parser.lo: org/xml/sax/$(am__dirstamp) \
-       org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-libsax_convenience.la: $(libsax_convenience_la_OBJECTS) $(libsax_convenience_la_DEPENDENCIES) 
-       $(GCJLINK)  $(libsax_convenience_la_LDFLAGS) $(libsax_convenience_la_OBJECTS) $(libsax_convenience_la_LIBADD) $(LIBS)
+libsax-gcj.la: $(libsax_gcj_la_OBJECTS) $(libsax_gcj_la_DEPENDENCIES) 
+       $(GCJLINK) -rpath $(toolexeclibdir) $(libsax_gcj_la_LDFLAGS) $(libsax_gcj_la_OBJECTS) $(libsax_gcj_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
-       -rm -f org/xml/sax/AttributeList.$(OBJEXT)
-       -rm -f org/xml/sax/AttributeList.lo
-       -rm -f org/xml/sax/Attributes.$(OBJEXT)
-       -rm -f org/xml/sax/Attributes.lo
-       -rm -f org/xml/sax/ContentHandler.$(OBJEXT)
-       -rm -f org/xml/sax/ContentHandler.lo
-       -rm -f org/xml/sax/DTDHandler.$(OBJEXT)
-       -rm -f org/xml/sax/DTDHandler.lo
-       -rm -f org/xml/sax/DocumentHandler.$(OBJEXT)
-       -rm -f org/xml/sax/DocumentHandler.lo
-       -rm -f org/xml/sax/EntityResolver.$(OBJEXT)
-       -rm -f org/xml/sax/EntityResolver.lo
-       -rm -f org/xml/sax/ErrorHandler.$(OBJEXT)
-       -rm -f org/xml/sax/ErrorHandler.lo
-       -rm -f org/xml/sax/HandlerBase.$(OBJEXT)
-       -rm -f org/xml/sax/HandlerBase.lo
-       -rm -f org/xml/sax/InputSource.$(OBJEXT)
-       -rm -f org/xml/sax/InputSource.lo
-       -rm -f org/xml/sax/Locator.$(OBJEXT)
-       -rm -f org/xml/sax/Locator.lo
-       -rm -f org/xml/sax/Parser.$(OBJEXT)
-       -rm -f org/xml/sax/Parser.lo
-       -rm -f org/xml/sax/SAXException.$(OBJEXT)
-       -rm -f org/xml/sax/SAXException.lo
-       -rm -f org/xml/sax/SAXNotRecognizedException.$(OBJEXT)
-       -rm -f org/xml/sax/SAXNotRecognizedException.lo
-       -rm -f org/xml/sax/SAXNotSupportedException.$(OBJEXT)
-       -rm -f org/xml/sax/SAXNotSupportedException.lo
-       -rm -f org/xml/sax/SAXParseException.$(OBJEXT)
-       -rm -f org/xml/sax/SAXParseException.lo
-       -rm -f org/xml/sax/XMLFilter.$(OBJEXT)
-       -rm -f org/xml/sax/XMLFilter.lo
-       -rm -f org/xml/sax/XMLReader.$(OBJEXT)
-       -rm -f org/xml/sax/XMLReader.lo
-       -rm -f org/xml/sax/ext/Attributes2.$(OBJEXT)
-       -rm -f org/xml/sax/ext/Attributes2.lo
-       -rm -f org/xml/sax/ext/Attributes2Impl.$(OBJEXT)
-       -rm -f org/xml/sax/ext/Attributes2Impl.lo
-       -rm -f org/xml/sax/ext/DeclHandler.$(OBJEXT)
-       -rm -f org/xml/sax/ext/DeclHandler.lo
-       -rm -f org/xml/sax/ext/DefaultHandler2.$(OBJEXT)
-       -rm -f org/xml/sax/ext/DefaultHandler2.lo
-       -rm -f org/xml/sax/ext/EntityResolver2.$(OBJEXT)
-       -rm -f org/xml/sax/ext/EntityResolver2.lo
-       -rm -f org/xml/sax/ext/LexicalHandler.$(OBJEXT)
-       -rm -f org/xml/sax/ext/LexicalHandler.lo
-       -rm -f org/xml/sax/ext/Locator2.$(OBJEXT)
-       -rm -f org/xml/sax/ext/Locator2.lo
-       -rm -f org/xml/sax/ext/Locator2Impl.$(OBJEXT)
-       -rm -f org/xml/sax/ext/Locator2Impl.lo
-       -rm -f org/xml/sax/helpers/AttributeListImpl.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/AttributeListImpl.lo
-       -rm -f org/xml/sax/helpers/AttributesImpl.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/AttributesImpl.lo
-       -rm -f org/xml/sax/helpers/DefaultHandler.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/DefaultHandler.lo
-       -rm -f org/xml/sax/helpers/LocatorImpl.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/LocatorImpl.lo
-       -rm -f org/xml/sax/helpers/NamespaceSupport.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/NamespaceSupport.lo
-       -rm -f org/xml/sax/helpers/NewInstance.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/NewInstance.lo
-       -rm -f org/xml/sax/helpers/ParserAdapter.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/ParserAdapter.lo
-       -rm -f org/xml/sax/helpers/ParserFactory.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/ParserFactory.lo
-       -rm -f org/xml/sax/helpers/XMLFilterImpl.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/XMLFilterImpl.lo
-       -rm -f org/xml/sax/helpers/XMLReaderAdapter.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/XMLReaderAdapter.lo
-       -rm -f org/xml/sax/helpers/XMLReaderFactory.$(OBJEXT)
-       -rm -f org/xml/sax/helpers/XMLReaderFactory.lo
 
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/AttributeList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/Attributes.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/ContentHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/DTDHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/DocumentHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/EntityResolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/ErrorHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/HandlerBase.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/InputSource.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/Locator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/Parser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/SAXException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/SAXNotRecognizedException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/SAXNotSupportedException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/SAXParseException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/XMLFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/$(DEPDIR)/XMLReader.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/ext/$(DEPDIR)/Attributes2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/ext/$(DEPDIR)/Attributes2Impl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/ext/$(DEPDIR)/DeclHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/ext/$(DEPDIR)/DefaultHandler2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/ext/$(DEPDIR)/EntityResolver2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/ext/$(DEPDIR)/LexicalHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/ext/$(DEPDIR)/Locator2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/ext/$(DEPDIR)/Locator2Impl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/AttributeListImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/AttributesImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/DefaultHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/LocatorImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/NamespaceSupport.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/NewInstance.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/ParserAdapter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/ParserFactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/XMLFilterImpl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/XMLReaderAdapter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/xml/sax/helpers/$(DEPDIR)/XMLReaderFactory.Plo@am__quote@
-
-.java.o:
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsax_gcj_la-sax.Plo@am__quote@
+
+.jar.o:
 @am__fastdepGCJ_TRUE@  depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`; \
 @am__fastdepGCJ_TRUE@  if $(GCJCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
 @am__fastdepGCJ_TRUE@  then mv -f "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
@@ -646,7 +439,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepGCJ_FALSE@     DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepGCJ_FALSE@ $(GCJCOMPILE) -c -o $@ $<
 
-.java.obj:
+.jar.obj:
 @am__fastdepGCJ_TRUE@  depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`; \
 @am__fastdepGCJ_TRUE@  if $(GCJCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepGCJ_TRUE@  then mv -f "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
@@ -654,7 +447,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepGCJ_FALSE@     DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepGCJ_FALSE@ $(GCJCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
-.java.lo:
+.jar.lo:
 @am__fastdepGCJ_TRUE@  depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \
 @am__fastdepGCJ_TRUE@  if $(LTGCJCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
 @am__fastdepGCJ_TRUE@  then mv -f "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi
@@ -662,14 +455,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepGCJ_FALSE@     DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepGCJ_FALSE@ $(LTGCJCOMPILE) -c -o $@ $<
 
+libsax_gcj_la-sax.lo: sax.jar
+@am__fastdepGCJ_TRUE@  if $(LIBTOOL) --mode=compile $(GCJ) $(libsax_gcj_la_GCJFLAGS) $(GCJFLAGS) -MT libsax_gcj_la-sax.lo -MD -MP -MF "$(DEPDIR)/libsax_gcj_la-sax.Tpo" -c -o libsax_gcj_la-sax.lo `test -f 'sax.jar' || echo '$(srcdir)/'`sax.jar; \
+@am__fastdepGCJ_TRUE@  then mv -f "$(DEPDIR)/libsax_gcj_la-sax.Tpo" "$(DEPDIR)/libsax_gcj_la-sax.Plo"; else rm -f "$(DEPDIR)/libsax_gcj_la-sax.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepGCJ_FALSE@     source='sax.jar' object='libsax_gcj_la-sax.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepGCJ_FALSE@     DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepGCJ_FALSE@ $(LIBTOOL) --mode=compile $(GCJ) $(libsax_gcj_la_GCJFLAGS) $(GCJFLAGS) -c -o libsax_gcj_la-sax.lo `test -f 'sax.jar' || echo '$(srcdir)/'`sax.jar
+
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-       -rm -rf org/xml/sax/.libs org/xml/sax/_libs
-       -rm -rf org/xml/sax/ext/.libs org/xml/sax/ext/_libs
-       -rm -rf org/xml/sax/helpers/.libs org/xml/sax/helpers/_libs
 
 distclean-libtool:
        -rm -f libtool
@@ -755,6 +552,9 @@ check: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) check-am
 all-am: Makefile $(LTLIBRARIES)
 installdirs:
+       for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
+         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+       done
 install: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) install-am
 install-exec: install-exec-am
@@ -776,12 +576,6 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -rm -f org/xml/sax/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/xml/sax/$(am__dirstamp)
-       -rm -f org/xml/sax/ext/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/xml/sax/ext/$(am__dirstamp)
-       -rm -f org/xml/sax/helpers/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/xml/sax/helpers/$(am__dirstamp)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -789,11 +583,11 @@ maintainer-clean-generic:
        -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+clean-am: clean-generic clean-libtool clean-toolexeclibLTLIBRARIES \
        mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf org/xml/sax/$(DEPDIR) org/xml/sax/ext/$(DEPDIR) org/xml/sax/helpers/$(DEPDIR)
+       -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-libtool distclean-tags
@@ -810,7 +604,7 @@ info-am:
 
 install-data-am:
 
-install-exec-am:
+install-exec-am: install-toolexeclibLTLIBRARIES
 
 install-info: install-info-am
 
@@ -819,7 +613,7 @@ install-man:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf org/xml/sax/$(DEPDIR) org/xml/sax/ext/$(DEPDIR) org/xml/sax/helpers/$(DEPDIR)
+       -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -836,29 +630,33 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am: uninstall-info-am uninstall-toolexeclibLTLIBRARIES
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+       clean-libtool clean-toolexeclibLTLIBRARIES ctags distclean \
        distclean-compile distclean-generic distclean-libtool \
        distclean-tags distdir dvi dvi-am html html-am info info-am \
        install install-am install-data install-data-am install-exec \
        install-exec-am install-info install-info-am install-man \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
-       uninstall-am uninstall-info-am
+       install-strip install-toolexeclibLTLIBRARIES installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+       pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \
+       uninstall-toolexeclibLTLIBRARIES
+
 
+sax.jar: classes.stamp
+       find org -name '*.class' -print | $(ZIP) -cfME@ $@
 
-classes.stamp: $(libsax_convenience_la_SOURCES)
+classes.stamp: $(source_files)
        here=`pwd`; cd $(srcdir); \
-       $(GCJ_WITH_FLAGS) -C -d $$here $(libsax_convenience_la_SOURCES)
+       $(GCJ_WITH_FLAGS) -C -d $$here $(source_files)
        echo > classes.stamp
 
 mostlyclean-local:
        -find . -name '*.class' | xargs rm
-       -rm classes.stamp
+       -rm classes.stamp sax.jar
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 01e11fa..52472fa 100644 (file)
@@ -2,7 +2,7 @@
 // http://www.saxproject.org
 // Written by David Megginson
 // This class is in the Public Domain.  NO WARRANTY!
-// $Id: NamespaceSupport.java,v 1.1 2004/12/23 22:38:42 mark Exp $
+// $Id: NamespaceSupport.java,v 1.1 2005/02/02 00:41:54 tromey Exp $
 
 package org.xml.sax.helpers;
 
@@ -113,7 +113,8 @@ public class NamespaceSupport
     /**
      * An empty enumeration.
      */
-    private final static Enumeration EMPTY_ENUMERATION =
+    // GCJ LOCAL: work around gcj bug by making this package-private
+    final static Enumeration EMPTY_ENUMERATION =
        new Vector().elements();
 
 \f
index 9eaa39a..f94e562 100644 (file)
@@ -5,6 +5,9 @@ AUTOMAKE_OPTIONS = foreign subdir-objects
 # May be used by various substitution variables.
 gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
 
+## Needed because $(ZIP) is a relative path.
+MULTIBUILDTOP = ../../
+
 ## The compiler with whatever flags we want for both -c and -C
 ## compiles.
 GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated -fbootclasspath=$(BOOTCLASSPATH)
@@ -20,18 +23,24 @@ AM_GCJFLAGS = \
 
 BUILT_SOURCES = classes.stamp
 
-classes.stamp: $(libw3c_convenience_la_SOURCES)
+w3c.jar: classes.stamp
+       find org -name '*.class' -print | $(ZIP) -cfME@ $@
+
+classes.stamp: $(source_files)
        here=`pwd`; cd $(srcdir); \
-       $(GCJ_WITH_FLAGS) -C -d $$here $(libw3c_convenience_la_SOURCES)
+       $(GCJ_WITH_FLAGS) -C -d $$here $(source_files)
        echo > classes.stamp
 
 mostlyclean-local:
        -find . -name '*.class' | xargs rm
-       -rm classes.stamp
+       -rm classes.stamp w3c.jar
+
+toolexeclib_LTLIBRARIES = libw3c-gcj.la
 
-noinst_LTLIBRARIES = libw3c_convenience.la
+libw3c_gcj_la_SOURCES =        w3c.jar
+libw3c_gcj_la_GCJFLAGS = -findirect-dispatch
 
-libw3c_convenience_la_SOURCES =        \
+source_files = \
 org/w3c/dom/xpath/XPathNamespace.java \
 org/w3c/dom/xpath/XPathResult.java \
 org/w3c/dom/xpath/XPathException.java \
index 8d64e75..6aef501 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.3 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -14,7 +14,7 @@
 
 @SET_MAKE@
 
-SOURCES = $(libw3c_convenience_la_SOURCES)
+SOURCES = $(libw3c_gcj_la_SOURCES)
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -58,132 +58,18 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 CONFIG_HEADER = $(top_builddir)/include/config.h \
        $(top_builddir)/gcj/libgcj-config.h
 CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libw3c_convenience_la_LIBADD =
-am__dirstamp = $(am__leading_dot)dirstamp
-am_libw3c_convenience_la_OBJECTS =  \
-       org/w3c/dom/xpath/XPathNamespace.lo \
-       org/w3c/dom/xpath/XPathResult.lo \
-       org/w3c/dom/xpath/XPathException.lo \
-       org/w3c/dom/xpath/XPathExpression.lo \
-       org/w3c/dom/xpath/XPathNSResolver.lo \
-       org/w3c/dom/xpath/XPathEvaluator.lo \
-       org/w3c/dom/DOMException.lo org/w3c/dom/Comment.lo \
-       org/w3c/dom/stylesheets/DocumentStyle.lo \
-       org/w3c/dom/stylesheets/MediaList.lo \
-       org/w3c/dom/stylesheets/LinkStyle.lo \
-       org/w3c/dom/stylesheets/StyleSheet.lo \
-       org/w3c/dom/stylesheets/StyleSheetList.lo org/w3c/dom/Attr.lo \
-       org/w3c/dom/Notation.lo org/w3c/dom/TypeInfo.lo \
-       org/w3c/dom/html2/HTMLIsIndexElement.lo \
-       org/w3c/dom/html2/HTMLTableColElement.lo \
-       org/w3c/dom/html2/HTMLLinkElement.lo \
-       org/w3c/dom/html2/HTMLTitleElement.lo \
-       org/w3c/dom/html2/HTMLBRElement.lo \
-       org/w3c/dom/html2/HTMLHeadElement.lo \
-       org/w3c/dom/html2/HTMLHtmlElement.lo \
-       org/w3c/dom/html2/HTMLScriptElement.lo \
-       org/w3c/dom/html2/HTMLTableRowElement.lo \
-       org/w3c/dom/html2/HTMLOptionsCollection.lo \
-       org/w3c/dom/html2/HTMLTableCellElement.lo \
-       org/w3c/dom/html2/HTMLDListElement.lo \
-       org/w3c/dom/html2/HTMLFieldSetElement.lo \
-       org/w3c/dom/html2/HTMLImageElement.lo \
-       org/w3c/dom/html2/HTMLHRElement.lo \
-       org/w3c/dom/html2/HTMLModElement.lo \
-       org/w3c/dom/html2/HTMLHeadingElement.lo \
-       org/w3c/dom/html2/HTMLTableElement.lo \
-       org/w3c/dom/html2/HTMLAreaElement.lo \
-       org/w3c/dom/html2/HTMLOptGroupElement.lo \
-       org/w3c/dom/html2/HTMLIFrameElement.lo \
-       org/w3c/dom/html2/HTMLDirectoryElement.lo \
-       org/w3c/dom/html2/HTMLParamElement.lo \
-       org/w3c/dom/html2/HTMLLegendElement.lo \
-       org/w3c/dom/html2/HTMLFrameElement.lo \
-       org/w3c/dom/html2/HTMLFormElement.lo \
-       org/w3c/dom/html2/HTMLStyleElement.lo \
-       org/w3c/dom/html2/HTMLFrameSetElement.lo \
-       org/w3c/dom/html2/HTMLCollection.lo \
-       org/w3c/dom/html2/HTMLAnchorElement.lo \
-       org/w3c/dom/html2/HTMLLabelElement.lo \
-       org/w3c/dom/html2/HTMLBodyElement.lo \
-       org/w3c/dom/html2/HTMLOptionElement.lo \
-       org/w3c/dom/html2/HTMLTableSectionElement.lo \
-       org/w3c/dom/html2/HTMLAppletElement.lo \
-       org/w3c/dom/html2/HTMLSelectElement.lo \
-       org/w3c/dom/html2/HTMLMetaElement.lo \
-       org/w3c/dom/html2/HTMLMenuElement.lo \
-       org/w3c/dom/html2/HTMLDivElement.lo \
-       org/w3c/dom/html2/HTMLLIElement.lo \
-       org/w3c/dom/html2/HTMLFontElement.lo \
-       org/w3c/dom/html2/HTMLOListElement.lo \
-       org/w3c/dom/html2/HTMLBaseFontElement.lo \
-       org/w3c/dom/html2/HTMLElement.lo \
-       org/w3c/dom/html2/HTMLTableCaptionElement.lo \
-       org/w3c/dom/html2/HTMLTextAreaElement.lo \
-       org/w3c/dom/html2/HTMLPreElement.lo \
-       org/w3c/dom/html2/HTMLObjectElement.lo \
-       org/w3c/dom/html2/HTMLBaseElement.lo \
-       org/w3c/dom/html2/HTMLUListElement.lo \
-       org/w3c/dom/html2/HTMLMapElement.lo \
-       org/w3c/dom/html2/HTMLParagraphElement.lo \
-       org/w3c/dom/html2/HTMLButtonElement.lo \
-       org/w3c/dom/html2/HTMLQuoteElement.lo \
-       org/w3c/dom/html2/HTMLInputElement.lo \
-       org/w3c/dom/html2/HTMLDocument.lo org/w3c/dom/ls/LSParser.lo \
-       org/w3c/dom/ls/LSSerializerFilter.lo \
-       org/w3c/dom/ls/LSLoadEvent.lo \
-       org/w3c/dom/ls/DOMImplementationLS.lo \
-       org/w3c/dom/ls/LSException.lo org/w3c/dom/ls/LSSerializer.lo \
-       org/w3c/dom/ls/LSResourceResolver.lo \
-       org/w3c/dom/ls/LSOutput.lo org/w3c/dom/ls/LSInput.lo \
-       org/w3c/dom/ls/LSProgressEvent.lo \
-       org/w3c/dom/ls/LSParserFilter.lo org/w3c/dom/DOMLocator.lo \
-       org/w3c/dom/DOMStringList.lo org/w3c/dom/DocumentFragment.lo \
-       org/w3c/dom/events/MutationEvent.lo \
-       org/w3c/dom/events/UIEvent.lo \
-       org/w3c/dom/events/EventListener.lo \
-       org/w3c/dom/events/Event.lo org/w3c/dom/events/MouseEvent.lo \
-       org/w3c/dom/events/EventTarget.lo \
-       org/w3c/dom/events/DocumentEvent.lo \
-       org/w3c/dom/events/EventException.lo \
-       org/w3c/dom/EntityReference.lo org/w3c/dom/DOMErrorHandler.lo \
-       org/w3c/dom/views/AbstractView.lo \
-       org/w3c/dom/views/DocumentView.lo org/w3c/dom/DOMError.lo \
-       org/w3c/dom/bootstrap/DOMImplementationRegistry.lo \
-       org/w3c/dom/traversal/TreeWalker.lo \
-       org/w3c/dom/traversal/NodeFilter.lo \
-       org/w3c/dom/traversal/DocumentTraversal.lo \
-       org/w3c/dom/traversal/NodeIterator.lo \
-       org/w3c/dom/CharacterData.lo org/w3c/dom/DOMConfiguration.lo \
-       org/w3c/dom/css/CSSRule.lo org/w3c/dom/css/Rect.lo \
-       org/w3c/dom/css/CSSStyleSheet.lo \
-       org/w3c/dom/css/CSSFontFaceRule.lo \
-       org/w3c/dom/css/CSSPrimitiveValue.lo \
-       org/w3c/dom/css/CSSRuleList.lo org/w3c/dom/css/ViewCSS.lo \
-       org/w3c/dom/css/CSSStyleRule.lo \
-       org/w3c/dom/css/CSSUnknownRule.lo org/w3c/dom/css/RGBColor.lo \
-       org/w3c/dom/css/ElementCSSInlineStyle.lo \
-       org/w3c/dom/css/CSSMediaRule.lo \
-       org/w3c/dom/css/CSS2Properties.lo org/w3c/dom/css/CSSValue.lo \
-       org/w3c/dom/css/CSSStyleDeclaration.lo \
-       org/w3c/dom/css/DOMImplementationCSS.lo \
-       org/w3c/dom/css/CSSCharsetRule.lo org/w3c/dom/css/Counter.lo \
-       org/w3c/dom/css/CSSPageRule.lo org/w3c/dom/css/DocumentCSS.lo \
-       org/w3c/dom/css/CSSValueList.lo \
-       org/w3c/dom/css/CSSImportRule.lo org/w3c/dom/NameList.lo \
-       org/w3c/dom/Element.lo org/w3c/dom/Document.lo \
-       org/w3c/dom/ranges/Range.lo \
-       org/w3c/dom/ranges/RangeException.lo \
-       org/w3c/dom/ranges/DocumentRange.lo \
-       org/w3c/dom/DOMImplementationList.lo org/w3c/dom/Entity.lo \
-       org/w3c/dom/UserDataHandler.lo \
-       org/w3c/dom/DOMImplementation.lo org/w3c/dom/CDATASection.lo \
-       org/w3c/dom/ProcessingInstruction.lo org/w3c/dom/Node.lo \
-       org/w3c/dom/NamedNodeMap.lo org/w3c/dom/NodeList.lo \
-       org/w3c/dom/Text.lo org/w3c/dom/DocumentType.lo \
-       org/w3c/dom/DOMImplementationSource.lo
-libw3c_convenience_la_OBJECTS = $(am_libw3c_convenience_la_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
+toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
+libw3c_gcj_la_LIBADD =
+am_libw3c_gcj_la_OBJECTS = libw3c_gcj_la-w3c.lo
+libw3c_gcj_la_OBJECTS = $(am_libw3c_gcj_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_builddir)/gcj
 depcomp = $(SHELL) $(top_srcdir)/../depcomp
 am__depfiles_maybe = depfiles
@@ -193,8 +79,8 @@ LTGCJCOMPILE = $(LIBTOOL) --mode=compile $(GCJ) $(AM_GCJFLAGS) \
 GCJLD = $(GCJ)
 GCJLINK = $(LIBTOOL) --mode=link $(GCJLD) $(AM_GCJFLAGS) $(GCJFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libw3c_convenience_la_SOURCES)
-DIST_SOURCES = $(libw3c_convenience_la_SOURCES)
+SOURCES = $(libw3c_gcj_la_SOURCES)
+DIST_SOURCES = $(libw3c_gcj_la_SOURCES)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -421,6 +307,7 @@ AUTOMAKE_OPTIONS = foreign subdir-objects
 
 # May be used by various substitution variables.
 gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+MULTIBUILDTOP = ../../
 GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated -fbootclasspath=$(BOOTCLASSPATH)
 BOOTCLASSPATH = $(here)'$(CLASSPATH_SEPARATOR)'$(srcdir)'$(CLASSPATH_SEPARATOR)'$(top_srcdir)'$(CLASSPATH_SEPARATOR)'$(top_builddir)
 AM_GCJFLAGS = \
@@ -431,8 +318,10 @@ AM_GCJFLAGS = \
        -Wno-deprecated
 
 BUILT_SOURCES = classes.stamp
-noinst_LTLIBRARIES = libw3c_convenience.la
-libw3c_convenience_la_SOURCES = \
+toolexeclib_LTLIBRARIES = libw3c-gcj.la
+libw3c_gcj_la_SOURCES = w3c.jar
+libw3c_gcj_la_GCJFLAGS = -findirect-dispatch
+source_files = \
 org/w3c/dom/xpath/XPathNamespace.java \
 org/w3c/dom/xpath/XPathResult.java \
 org/w3c/dom/xpath/XPathException.java \
@@ -584,7 +473,7 @@ all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .java .lo .o .obj
+.SUFFIXES: .jar .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -614,897 +503,45 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(toolexeclibdir)" || $(mkdir_p) "$(DESTDIR)$(toolexeclibdir)"
+       @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+         if test -f $$p; then \
+           f=$(am__strip_dir) \
+           echo " $(LIBTOOL) --mode=install $(toolexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
+           $(LIBTOOL) --mode=install $(toolexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(toolexeclibdir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-toolexeclibLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @set -x; list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+         p=$(am__strip_dir) \
+         echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$p'"; \
+         $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$p"; \
+       done
 
-clean-noinstLTLIBRARIES:
-       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+clean-toolexeclibLTLIBRARIES:
+       -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+       @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
          dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
          test "$$dir" != "$$p" || dir=.; \
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
-org/w3c/dom/xpath/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/xpath
-       @: > org/w3c/dom/xpath/$(am__dirstamp)
-org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/xpath/$(DEPDIR)
-       @: > org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/xpath/XPathNamespace.lo:  \
-       org/w3c/dom/xpath/$(am__dirstamp) \
-       org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/xpath/XPathResult.lo: org/w3c/dom/xpath/$(am__dirstamp) \
-       org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/xpath/XPathException.lo:  \
-       org/w3c/dom/xpath/$(am__dirstamp) \
-       org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/xpath/XPathExpression.lo:  \
-       org/w3c/dom/xpath/$(am__dirstamp) \
-       org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/xpath/XPathNSResolver.lo:  \
-       org/w3c/dom/xpath/$(am__dirstamp) \
-       org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/xpath/XPathEvaluator.lo:  \
-       org/w3c/dom/xpath/$(am__dirstamp) \
-       org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom
-       @: > org/w3c/dom/$(am__dirstamp)
-org/w3c/dom/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/$(DEPDIR)
-       @: > org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMException.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/Comment.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/stylesheets/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/stylesheets
-       @: > org/w3c/dom/stylesheets/$(am__dirstamp)
-org/w3c/dom/stylesheets/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/stylesheets/$(DEPDIR)
-       @: > org/w3c/dom/stylesheets/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/stylesheets/DocumentStyle.lo:  \
-       org/w3c/dom/stylesheets/$(am__dirstamp) \
-       org/w3c/dom/stylesheets/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/stylesheets/MediaList.lo:  \
-       org/w3c/dom/stylesheets/$(am__dirstamp) \
-       org/w3c/dom/stylesheets/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/stylesheets/LinkStyle.lo:  \
-       org/w3c/dom/stylesheets/$(am__dirstamp) \
-       org/w3c/dom/stylesheets/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/stylesheets/StyleSheet.lo:  \
-       org/w3c/dom/stylesheets/$(am__dirstamp) \
-       org/w3c/dom/stylesheets/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/stylesheets/StyleSheetList.lo:  \
-       org/w3c/dom/stylesheets/$(am__dirstamp) \
-       org/w3c/dom/stylesheets/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/Attr.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/Notation.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/TypeInfo.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/html2
-       @: > org/w3c/dom/html2/$(am__dirstamp)
-org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/html2/$(DEPDIR)
-       @: > org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLIsIndexElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLTableColElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLLinkElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLTitleElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLBRElement.lo: org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLHeadElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLHtmlElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLScriptElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLTableRowElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLOptionsCollection.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLTableCellElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLDListElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLFieldSetElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLImageElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLHRElement.lo: org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLModElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLHeadingElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLTableElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLAreaElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLOptGroupElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLIFrameElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLDirectoryElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLParamElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLLegendElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLFrameElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLFormElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLStyleElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLFrameSetElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLCollection.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLAnchorElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLLabelElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLBodyElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLOptionElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLTableSectionElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLAppletElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLSelectElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLMetaElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLMenuElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLDivElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLLIElement.lo: org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLFontElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLOListElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLBaseFontElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLElement.lo: org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLTableCaptionElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLTextAreaElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLPreElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLObjectElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLBaseElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLUListElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLMapElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLParagraphElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLButtonElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLQuoteElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLInputElement.lo:  \
-       org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/html2/HTMLDocument.lo: org/w3c/dom/html2/$(am__dirstamp) \
-       org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/ls
-       @: > org/w3c/dom/ls/$(am__dirstamp)
-org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/ls/$(DEPDIR)
-       @: > org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSParser.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSSerializerFilter.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSLoadEvent.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/DOMImplementationLS.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSException.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSSerializer.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSResourceResolver.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSOutput.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSInput.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSProgressEvent.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ls/LSParserFilter.lo: org/w3c/dom/ls/$(am__dirstamp) \
-       org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMLocator.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMStringList.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DocumentFragment.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/events
-       @: > org/w3c/dom/events/$(am__dirstamp)
-org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/events/$(DEPDIR)
-       @: > org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/MutationEvent.lo:  \
-       org/w3c/dom/events/$(am__dirstamp) \
-       org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/UIEvent.lo: org/w3c/dom/events/$(am__dirstamp) \
-       org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/EventListener.lo:  \
-       org/w3c/dom/events/$(am__dirstamp) \
-       org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/Event.lo: org/w3c/dom/events/$(am__dirstamp) \
-       org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/MouseEvent.lo: org/w3c/dom/events/$(am__dirstamp) \
-       org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/EventTarget.lo: org/w3c/dom/events/$(am__dirstamp) \
-       org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/DocumentEvent.lo:  \
-       org/w3c/dom/events/$(am__dirstamp) \
-       org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/events/EventException.lo:  \
-       org/w3c/dom/events/$(am__dirstamp) \
-       org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/EntityReference.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMErrorHandler.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/views/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/views
-       @: > org/w3c/dom/views/$(am__dirstamp)
-org/w3c/dom/views/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/views/$(DEPDIR)
-       @: > org/w3c/dom/views/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/views/AbstractView.lo: org/w3c/dom/views/$(am__dirstamp) \
-       org/w3c/dom/views/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/views/DocumentView.lo: org/w3c/dom/views/$(am__dirstamp) \
-       org/w3c/dom/views/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMError.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/bootstrap/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/bootstrap
-       @: > org/w3c/dom/bootstrap/$(am__dirstamp)
-org/w3c/dom/bootstrap/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/bootstrap/$(DEPDIR)
-       @: > org/w3c/dom/bootstrap/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/bootstrap/DOMImplementationRegistry.lo:  \
-       org/w3c/dom/bootstrap/$(am__dirstamp) \
-       org/w3c/dom/bootstrap/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/traversal/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/traversal
-       @: > org/w3c/dom/traversal/$(am__dirstamp)
-org/w3c/dom/traversal/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/traversal/$(DEPDIR)
-       @: > org/w3c/dom/traversal/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/traversal/TreeWalker.lo:  \
-       org/w3c/dom/traversal/$(am__dirstamp) \
-       org/w3c/dom/traversal/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/traversal/NodeFilter.lo:  \
-       org/w3c/dom/traversal/$(am__dirstamp) \
-       org/w3c/dom/traversal/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/traversal/DocumentTraversal.lo:  \
-       org/w3c/dom/traversal/$(am__dirstamp) \
-       org/w3c/dom/traversal/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/traversal/NodeIterator.lo:  \
-       org/w3c/dom/traversal/$(am__dirstamp) \
-       org/w3c/dom/traversal/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/CharacterData.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMConfiguration.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/css
-       @: > org/w3c/dom/css/$(am__dirstamp)
-org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/css/$(DEPDIR)
-       @: > org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSRule.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/Rect.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSStyleSheet.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSFontFaceRule.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSPrimitiveValue.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSRuleList.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/ViewCSS.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSStyleRule.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSUnknownRule.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/RGBColor.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/ElementCSSInlineStyle.lo:  \
-       org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSMediaRule.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSS2Properties.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSValue.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSStyleDeclaration.lo:  \
-       org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/DOMImplementationCSS.lo:  \
-       org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSCharsetRule.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/Counter.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSPageRule.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/DocumentCSS.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSValueList.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/css/CSSImportRule.lo: org/w3c/dom/css/$(am__dirstamp) \
-       org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/NameList.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/Element.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/Document.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ranges/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/ranges
-       @: > org/w3c/dom/ranges/$(am__dirstamp)
-org/w3c/dom/ranges/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) org/w3c/dom/ranges/$(DEPDIR)
-       @: > org/w3c/dom/ranges/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ranges/Range.lo: org/w3c/dom/ranges/$(am__dirstamp) \
-       org/w3c/dom/ranges/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ranges/RangeException.lo:  \
-       org/w3c/dom/ranges/$(am__dirstamp) \
-       org/w3c/dom/ranges/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ranges/DocumentRange.lo:  \
-       org/w3c/dom/ranges/$(am__dirstamp) \
-       org/w3c/dom/ranges/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMImplementationList.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/Entity.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/UserDataHandler.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMImplementation.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/CDATASection.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/ProcessingInstruction.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/Node.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/NamedNodeMap.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/NodeList.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/Text.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DocumentType.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-org/w3c/dom/DOMImplementationSource.lo: org/w3c/dom/$(am__dirstamp) \
-       org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-libw3c_convenience.la: $(libw3c_convenience_la_OBJECTS) $(libw3c_convenience_la_DEPENDENCIES) 
-       $(GCJLINK)  $(libw3c_convenience_la_LDFLAGS) $(libw3c_convenience_la_OBJECTS) $(libw3c_convenience_la_LIBADD) $(LIBS)
+libw3c-gcj.la: $(libw3c_gcj_la_OBJECTS) $(libw3c_gcj_la_DEPENDENCIES) 
+       $(GCJLINK) -rpath $(toolexeclibdir) $(libw3c_gcj_la_LDFLAGS) $(libw3c_gcj_la_OBJECTS) $(libw3c_gcj_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
-       -rm -f org/w3c/dom/Attr.$(OBJEXT)
-       -rm -f org/w3c/dom/Attr.lo
-       -rm -f org/w3c/dom/CDATASection.$(OBJEXT)
-       -rm -f org/w3c/dom/CDATASection.lo
-       -rm -f org/w3c/dom/CharacterData.$(OBJEXT)
-       -rm -f org/w3c/dom/CharacterData.lo
-       -rm -f org/w3c/dom/Comment.$(OBJEXT)
-       -rm -f org/w3c/dom/Comment.lo
-       -rm -f org/w3c/dom/DOMConfiguration.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMConfiguration.lo
-       -rm -f org/w3c/dom/DOMError.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMError.lo
-       -rm -f org/w3c/dom/DOMErrorHandler.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMErrorHandler.lo
-       -rm -f org/w3c/dom/DOMException.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMException.lo
-       -rm -f org/w3c/dom/DOMImplementation.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMImplementation.lo
-       -rm -f org/w3c/dom/DOMImplementationList.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMImplementationList.lo
-       -rm -f org/w3c/dom/DOMImplementationSource.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMImplementationSource.lo
-       -rm -f org/w3c/dom/DOMLocator.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMLocator.lo
-       -rm -f org/w3c/dom/DOMStringList.$(OBJEXT)
-       -rm -f org/w3c/dom/DOMStringList.lo
-       -rm -f org/w3c/dom/Document.$(OBJEXT)
-       -rm -f org/w3c/dom/Document.lo
-       -rm -f org/w3c/dom/DocumentFragment.$(OBJEXT)
-       -rm -f org/w3c/dom/DocumentFragment.lo
-       -rm -f org/w3c/dom/DocumentType.$(OBJEXT)
-       -rm -f org/w3c/dom/DocumentType.lo
-       -rm -f org/w3c/dom/Element.$(OBJEXT)
-       -rm -f org/w3c/dom/Element.lo
-       -rm -f org/w3c/dom/Entity.$(OBJEXT)
-       -rm -f org/w3c/dom/Entity.lo
-       -rm -f org/w3c/dom/EntityReference.$(OBJEXT)
-       -rm -f org/w3c/dom/EntityReference.lo
-       -rm -f org/w3c/dom/NameList.$(OBJEXT)
-       -rm -f org/w3c/dom/NameList.lo
-       -rm -f org/w3c/dom/NamedNodeMap.$(OBJEXT)
-       -rm -f org/w3c/dom/NamedNodeMap.lo
-       -rm -f org/w3c/dom/Node.$(OBJEXT)
-       -rm -f org/w3c/dom/Node.lo
-       -rm -f org/w3c/dom/NodeList.$(OBJEXT)
-       -rm -f org/w3c/dom/NodeList.lo
-       -rm -f org/w3c/dom/Notation.$(OBJEXT)
-       -rm -f org/w3c/dom/Notation.lo
-       -rm -f org/w3c/dom/ProcessingInstruction.$(OBJEXT)
-       -rm -f org/w3c/dom/ProcessingInstruction.lo
-       -rm -f org/w3c/dom/Text.$(OBJEXT)
-       -rm -f org/w3c/dom/Text.lo
-       -rm -f org/w3c/dom/TypeInfo.$(OBJEXT)
-       -rm -f org/w3c/dom/TypeInfo.lo
-       -rm -f org/w3c/dom/UserDataHandler.$(OBJEXT)
-       -rm -f org/w3c/dom/UserDataHandler.lo
-       -rm -f org/w3c/dom/bootstrap/DOMImplementationRegistry.$(OBJEXT)
-       -rm -f org/w3c/dom/bootstrap/DOMImplementationRegistry.lo
-       -rm -f org/w3c/dom/css/CSS2Properties.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSS2Properties.lo
-       -rm -f org/w3c/dom/css/CSSCharsetRule.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSCharsetRule.lo
-       -rm -f org/w3c/dom/css/CSSFontFaceRule.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSFontFaceRule.lo
-       -rm -f org/w3c/dom/css/CSSImportRule.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSImportRule.lo
-       -rm -f org/w3c/dom/css/CSSMediaRule.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSMediaRule.lo
-       -rm -f org/w3c/dom/css/CSSPageRule.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSPageRule.lo
-       -rm -f org/w3c/dom/css/CSSPrimitiveValue.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSPrimitiveValue.lo
-       -rm -f org/w3c/dom/css/CSSRule.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSRule.lo
-       -rm -f org/w3c/dom/css/CSSRuleList.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSRuleList.lo
-       -rm -f org/w3c/dom/css/CSSStyleDeclaration.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSStyleDeclaration.lo
-       -rm -f org/w3c/dom/css/CSSStyleRule.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSStyleRule.lo
-       -rm -f org/w3c/dom/css/CSSStyleSheet.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSStyleSheet.lo
-       -rm -f org/w3c/dom/css/CSSUnknownRule.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSUnknownRule.lo
-       -rm -f org/w3c/dom/css/CSSValue.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSValue.lo
-       -rm -f org/w3c/dom/css/CSSValueList.$(OBJEXT)
-       -rm -f org/w3c/dom/css/CSSValueList.lo
-       -rm -f org/w3c/dom/css/Counter.$(OBJEXT)
-       -rm -f org/w3c/dom/css/Counter.lo
-       -rm -f org/w3c/dom/css/DOMImplementationCSS.$(OBJEXT)
-       -rm -f org/w3c/dom/css/DOMImplementationCSS.lo
-       -rm -f org/w3c/dom/css/DocumentCSS.$(OBJEXT)
-       -rm -f org/w3c/dom/css/DocumentCSS.lo
-       -rm -f org/w3c/dom/css/ElementCSSInlineStyle.$(OBJEXT)
-       -rm -f org/w3c/dom/css/ElementCSSInlineStyle.lo
-       -rm -f org/w3c/dom/css/RGBColor.$(OBJEXT)
-       -rm -f org/w3c/dom/css/RGBColor.lo
-       -rm -f org/w3c/dom/css/Rect.$(OBJEXT)
-       -rm -f org/w3c/dom/css/Rect.lo
-       -rm -f org/w3c/dom/css/ViewCSS.$(OBJEXT)
-       -rm -f org/w3c/dom/css/ViewCSS.lo
-       -rm -f org/w3c/dom/events/DocumentEvent.$(OBJEXT)
-       -rm -f org/w3c/dom/events/DocumentEvent.lo
-       -rm -f org/w3c/dom/events/Event.$(OBJEXT)
-       -rm -f org/w3c/dom/events/Event.lo
-       -rm -f org/w3c/dom/events/EventException.$(OBJEXT)
-       -rm -f org/w3c/dom/events/EventException.lo
-       -rm -f org/w3c/dom/events/EventListener.$(OBJEXT)
-       -rm -f org/w3c/dom/events/EventListener.lo
-       -rm -f org/w3c/dom/events/EventTarget.$(OBJEXT)
-       -rm -f org/w3c/dom/events/EventTarget.lo
-       -rm -f org/w3c/dom/events/MouseEvent.$(OBJEXT)
-       -rm -f org/w3c/dom/events/MouseEvent.lo
-       -rm -f org/w3c/dom/events/MutationEvent.$(OBJEXT)
-       -rm -f org/w3c/dom/events/MutationEvent.lo
-       -rm -f org/w3c/dom/events/UIEvent.$(OBJEXT)
-       -rm -f org/w3c/dom/events/UIEvent.lo
-       -rm -f org/w3c/dom/html2/HTMLAnchorElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLAnchorElement.lo
-       -rm -f org/w3c/dom/html2/HTMLAppletElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLAppletElement.lo
-       -rm -f org/w3c/dom/html2/HTMLAreaElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLAreaElement.lo
-       -rm -f org/w3c/dom/html2/HTMLBRElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLBRElement.lo
-       -rm -f org/w3c/dom/html2/HTMLBaseElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLBaseElement.lo
-       -rm -f org/w3c/dom/html2/HTMLBaseFontElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLBaseFontElement.lo
-       -rm -f org/w3c/dom/html2/HTMLBodyElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLBodyElement.lo
-       -rm -f org/w3c/dom/html2/HTMLButtonElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLButtonElement.lo
-       -rm -f org/w3c/dom/html2/HTMLCollection.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLCollection.lo
-       -rm -f org/w3c/dom/html2/HTMLDListElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLDListElement.lo
-       -rm -f org/w3c/dom/html2/HTMLDirectoryElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLDirectoryElement.lo
-       -rm -f org/w3c/dom/html2/HTMLDivElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLDivElement.lo
-       -rm -f org/w3c/dom/html2/HTMLDocument.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLDocument.lo
-       -rm -f org/w3c/dom/html2/HTMLElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLElement.lo
-       -rm -f org/w3c/dom/html2/HTMLFieldSetElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLFieldSetElement.lo
-       -rm -f org/w3c/dom/html2/HTMLFontElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLFontElement.lo
-       -rm -f org/w3c/dom/html2/HTMLFormElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLFormElement.lo
-       -rm -f org/w3c/dom/html2/HTMLFrameElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLFrameElement.lo
-       -rm -f org/w3c/dom/html2/HTMLFrameSetElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLFrameSetElement.lo
-       -rm -f org/w3c/dom/html2/HTMLHRElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLHRElement.lo
-       -rm -f org/w3c/dom/html2/HTMLHeadElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLHeadElement.lo
-       -rm -f org/w3c/dom/html2/HTMLHeadingElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLHeadingElement.lo
-       -rm -f org/w3c/dom/html2/HTMLHtmlElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLHtmlElement.lo
-       -rm -f org/w3c/dom/html2/HTMLIFrameElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLIFrameElement.lo
-       -rm -f org/w3c/dom/html2/HTMLImageElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLImageElement.lo
-       -rm -f org/w3c/dom/html2/HTMLInputElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLInputElement.lo
-       -rm -f org/w3c/dom/html2/HTMLIsIndexElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLIsIndexElement.lo
-       -rm -f org/w3c/dom/html2/HTMLLIElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLLIElement.lo
-       -rm -f org/w3c/dom/html2/HTMLLabelElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLLabelElement.lo
-       -rm -f org/w3c/dom/html2/HTMLLegendElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLLegendElement.lo
-       -rm -f org/w3c/dom/html2/HTMLLinkElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLLinkElement.lo
-       -rm -f org/w3c/dom/html2/HTMLMapElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLMapElement.lo
-       -rm -f org/w3c/dom/html2/HTMLMenuElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLMenuElement.lo
-       -rm -f org/w3c/dom/html2/HTMLMetaElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLMetaElement.lo
-       -rm -f org/w3c/dom/html2/HTMLModElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLModElement.lo
-       -rm -f org/w3c/dom/html2/HTMLOListElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLOListElement.lo
-       -rm -f org/w3c/dom/html2/HTMLObjectElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLObjectElement.lo
-       -rm -f org/w3c/dom/html2/HTMLOptGroupElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLOptGroupElement.lo
-       -rm -f org/w3c/dom/html2/HTMLOptionElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLOptionElement.lo
-       -rm -f org/w3c/dom/html2/HTMLOptionsCollection.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLOptionsCollection.lo
-       -rm -f org/w3c/dom/html2/HTMLParagraphElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLParagraphElement.lo
-       -rm -f org/w3c/dom/html2/HTMLParamElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLParamElement.lo
-       -rm -f org/w3c/dom/html2/HTMLPreElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLPreElement.lo
-       -rm -f org/w3c/dom/html2/HTMLQuoteElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLQuoteElement.lo
-       -rm -f org/w3c/dom/html2/HTMLScriptElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLScriptElement.lo
-       -rm -f org/w3c/dom/html2/HTMLSelectElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLSelectElement.lo
-       -rm -f org/w3c/dom/html2/HTMLStyleElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLStyleElement.lo
-       -rm -f org/w3c/dom/html2/HTMLTableCaptionElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLTableCaptionElement.lo
-       -rm -f org/w3c/dom/html2/HTMLTableCellElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLTableCellElement.lo
-       -rm -f org/w3c/dom/html2/HTMLTableColElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLTableColElement.lo
-       -rm -f org/w3c/dom/html2/HTMLTableElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLTableElement.lo
-       -rm -f org/w3c/dom/html2/HTMLTableRowElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLTableRowElement.lo
-       -rm -f org/w3c/dom/html2/HTMLTableSectionElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLTableSectionElement.lo
-       -rm -f org/w3c/dom/html2/HTMLTextAreaElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLTextAreaElement.lo
-       -rm -f org/w3c/dom/html2/HTMLTitleElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLTitleElement.lo
-       -rm -f org/w3c/dom/html2/HTMLUListElement.$(OBJEXT)
-       -rm -f org/w3c/dom/html2/HTMLUListElement.lo
-       -rm -f org/w3c/dom/ls/DOMImplementationLS.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/DOMImplementationLS.lo
-       -rm -f org/w3c/dom/ls/LSException.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSException.lo
-       -rm -f org/w3c/dom/ls/LSInput.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSInput.lo
-       -rm -f org/w3c/dom/ls/LSLoadEvent.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSLoadEvent.lo
-       -rm -f org/w3c/dom/ls/LSOutput.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSOutput.lo
-       -rm -f org/w3c/dom/ls/LSParser.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSParser.lo
-       -rm -f org/w3c/dom/ls/LSParserFilter.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSParserFilter.lo
-       -rm -f org/w3c/dom/ls/LSProgressEvent.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSProgressEvent.lo
-       -rm -f org/w3c/dom/ls/LSResourceResolver.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSResourceResolver.lo
-       -rm -f org/w3c/dom/ls/LSSerializer.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSSerializer.lo
-       -rm -f org/w3c/dom/ls/LSSerializerFilter.$(OBJEXT)
-       -rm -f org/w3c/dom/ls/LSSerializerFilter.lo
-       -rm -f org/w3c/dom/ranges/DocumentRange.$(OBJEXT)
-       -rm -f org/w3c/dom/ranges/DocumentRange.lo
-       -rm -f org/w3c/dom/ranges/Range.$(OBJEXT)
-       -rm -f org/w3c/dom/ranges/Range.lo
-       -rm -f org/w3c/dom/ranges/RangeException.$(OBJEXT)
-       -rm -f org/w3c/dom/ranges/RangeException.lo
-       -rm -f org/w3c/dom/stylesheets/DocumentStyle.$(OBJEXT)
-       -rm -f org/w3c/dom/stylesheets/DocumentStyle.lo
-       -rm -f org/w3c/dom/stylesheets/LinkStyle.$(OBJEXT)
-       -rm -f org/w3c/dom/stylesheets/LinkStyle.lo
-       -rm -f org/w3c/dom/stylesheets/MediaList.$(OBJEXT)
-       -rm -f org/w3c/dom/stylesheets/MediaList.lo
-       -rm -f org/w3c/dom/stylesheets/StyleSheet.$(OBJEXT)
-       -rm -f org/w3c/dom/stylesheets/StyleSheet.lo
-       -rm -f org/w3c/dom/stylesheets/StyleSheetList.$(OBJEXT)
-       -rm -f org/w3c/dom/stylesheets/StyleSheetList.lo
-       -rm -f org/w3c/dom/traversal/DocumentTraversal.$(OBJEXT)
-       -rm -f org/w3c/dom/traversal/DocumentTraversal.lo
-       -rm -f org/w3c/dom/traversal/NodeFilter.$(OBJEXT)
-       -rm -f org/w3c/dom/traversal/NodeFilter.lo
-       -rm -f org/w3c/dom/traversal/NodeIterator.$(OBJEXT)
-       -rm -f org/w3c/dom/traversal/NodeIterator.lo
-       -rm -f org/w3c/dom/traversal/TreeWalker.$(OBJEXT)
-       -rm -f org/w3c/dom/traversal/TreeWalker.lo
-       -rm -f org/w3c/dom/views/AbstractView.$(OBJEXT)
-       -rm -f org/w3c/dom/views/AbstractView.lo
-       -rm -f org/w3c/dom/views/DocumentView.$(OBJEXT)
-       -rm -f org/w3c/dom/views/DocumentView.lo
-       -rm -f org/w3c/dom/xpath/XPathEvaluator.$(OBJEXT)
-       -rm -f org/w3c/dom/xpath/XPathEvaluator.lo
-       -rm -f org/w3c/dom/xpath/XPathException.$(OBJEXT)
-       -rm -f org/w3c/dom/xpath/XPathException.lo
-       -rm -f org/w3c/dom/xpath/XPathExpression.$(OBJEXT)
-       -rm -f org/w3c/dom/xpath/XPathExpression.lo
-       -rm -f org/w3c/dom/xpath/XPathNSResolver.$(OBJEXT)
-       -rm -f org/w3c/dom/xpath/XPathNSResolver.lo
-       -rm -f org/w3c/dom/xpath/XPathNamespace.$(OBJEXT)
-       -rm -f org/w3c/dom/xpath/XPathNamespace.lo
-       -rm -f org/w3c/dom/xpath/XPathResult.$(OBJEXT)
-       -rm -f org/w3c/dom/xpath/XPathResult.lo
 
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/Attr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/CDATASection.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/CharacterData.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/Comment.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMConfiguration.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMError.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMErrorHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMImplementation.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMImplementationList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMImplementationSource.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMLocator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DOMStringList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/Document.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DocumentFragment.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/DocumentType.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/Element.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/Entity.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/EntityReference.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/NameList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/NamedNodeMap.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/Node.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/NodeList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/Notation.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/ProcessingInstruction.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/Text.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/TypeInfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/$(DEPDIR)/UserDataHandler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/bootstrap/$(DEPDIR)/DOMImplementationRegistry.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSS2Properties.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSCharsetRule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSFontFaceRule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSImportRule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSMediaRule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSPageRule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSPrimitiveValue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSRule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSRuleList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSStyleDeclaration.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSStyleRule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSStyleSheet.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSUnknownRule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSValue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/CSSValueList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/Counter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/DOMImplementationCSS.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/DocumentCSS.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/ElementCSSInlineStyle.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/RGBColor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/Rect.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/css/$(DEPDIR)/ViewCSS.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/events/$(DEPDIR)/DocumentEvent.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/events/$(DEPDIR)/Event.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/events/$(DEPDIR)/EventException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/events/$(DEPDIR)/EventListener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/events/$(DEPDIR)/EventTarget.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/events/$(DEPDIR)/MouseEvent.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/events/$(DEPDIR)/MutationEvent.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/events/$(DEPDIR)/UIEvent.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLAnchorElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLAppletElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLAreaElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLBRElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLBaseElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLBaseFontElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLBodyElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLButtonElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLCollection.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLDListElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLDirectoryElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLDivElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLDocument.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLFieldSetElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLFontElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLFormElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLFrameElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLFrameSetElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLHRElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLHeadElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLHeadingElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLHtmlElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLIFrameElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLImageElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLInputElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLIsIndexElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLLIElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLLabelElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLLegendElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLLinkElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLMapElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLMenuElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLMetaElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLModElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLOListElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLObjectElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLOptGroupElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLOptionElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLOptionsCollection.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLParagraphElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLParamElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLPreElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLQuoteElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLScriptElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLSelectElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLStyleElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLTableCaptionElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLTableCellElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLTableColElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLTableElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLTableRowElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLTableSectionElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLTextAreaElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLTitleElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/html2/$(DEPDIR)/HTMLUListElement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/DOMImplementationLS.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSInput.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSLoadEvent.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSOutput.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSParser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSParserFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSProgressEvent.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSResourceResolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSSerializer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ls/$(DEPDIR)/LSSerializerFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ranges/$(DEPDIR)/DocumentRange.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ranges/$(DEPDIR)/Range.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/ranges/$(DEPDIR)/RangeException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/stylesheets/$(DEPDIR)/DocumentStyle.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/stylesheets/$(DEPDIR)/LinkStyle.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/stylesheets/$(DEPDIR)/MediaList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/stylesheets/$(DEPDIR)/StyleSheet.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/stylesheets/$(DEPDIR)/StyleSheetList.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/traversal/$(DEPDIR)/DocumentTraversal.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/traversal/$(DEPDIR)/NodeFilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/traversal/$(DEPDIR)/NodeIterator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/traversal/$(DEPDIR)/TreeWalker.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/views/$(DEPDIR)/AbstractView.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/views/$(DEPDIR)/DocumentView.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/xpath/$(DEPDIR)/XPathEvaluator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/xpath/$(DEPDIR)/XPathException.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/xpath/$(DEPDIR)/XPathExpression.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/xpath/$(DEPDIR)/XPathNSResolver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/xpath/$(DEPDIR)/XPathNamespace.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@org/w3c/dom/xpath/$(DEPDIR)/XPathResult.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw3c_gcj_la-w3c.Plo@am__quote@
 
-.java.o:
+.jar.o:
 @am__fastdepGCJ_TRUE@  depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`; \
 @am__fastdepGCJ_TRUE@  if $(GCJCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
 @am__fastdepGCJ_TRUE@  then mv -f "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
@@ -1512,7 +549,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepGCJ_FALSE@     DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepGCJ_FALSE@ $(GCJCOMPILE) -c -o $@ $<
 
-.java.obj:
+.jar.obj:
 @am__fastdepGCJ_TRUE@  depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`; \
 @am__fastdepGCJ_TRUE@  if $(GCJCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepGCJ_TRUE@  then mv -f "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
@@ -1520,7 +557,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepGCJ_FALSE@     DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepGCJ_FALSE@ $(GCJCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
-.java.lo:
+.jar.lo:
 @am__fastdepGCJ_TRUE@  depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \
 @am__fastdepGCJ_TRUE@  if $(LTGCJCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
 @am__fastdepGCJ_TRUE@  then mv -f "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi
@@ -1528,22 +565,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepGCJ_FALSE@     DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepGCJ_FALSE@ $(LTGCJCOMPILE) -c -o $@ $<
 
+libw3c_gcj_la-w3c.lo: w3c.jar
+@am__fastdepGCJ_TRUE@  if $(LIBTOOL) --mode=compile $(GCJ) $(libw3c_gcj_la_GCJFLAGS) $(GCJFLAGS) -MT libw3c_gcj_la-w3c.lo -MD -MP -MF "$(DEPDIR)/libw3c_gcj_la-w3c.Tpo" -c -o libw3c_gcj_la-w3c.lo `test -f 'w3c.jar' || echo '$(srcdir)/'`w3c.jar; \
+@am__fastdepGCJ_TRUE@  then mv -f "$(DEPDIR)/libw3c_gcj_la-w3c.Tpo" "$(DEPDIR)/libw3c_gcj_la-w3c.Plo"; else rm -f "$(DEPDIR)/libw3c_gcj_la-w3c.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepGCJ_FALSE@     source='w3c.jar' object='libw3c_gcj_la-w3c.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepGCJ_FALSE@     DEPDIR=$(DEPDIR) $(GCJDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepGCJ_FALSE@ $(LIBTOOL) --mode=compile $(GCJ) $(libw3c_gcj_la_GCJFLAGS) $(GCJFLAGS) -c -o libw3c_gcj_la-w3c.lo `test -f 'w3c.jar' || echo '$(srcdir)/'`w3c.jar
+
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-       -rm -rf org/w3c/dom/.libs org/w3c/dom/_libs
-       -rm -rf org/w3c/dom/bootstrap/.libs org/w3c/dom/bootstrap/_libs
-       -rm -rf org/w3c/dom/css/.libs org/w3c/dom/css/_libs
-       -rm -rf org/w3c/dom/events/.libs org/w3c/dom/events/_libs
-       -rm -rf org/w3c/dom/html2/.libs org/w3c/dom/html2/_libs
-       -rm -rf org/w3c/dom/ls/.libs org/w3c/dom/ls/_libs
-       -rm -rf org/w3c/dom/ranges/.libs org/w3c/dom/ranges/_libs
-       -rm -rf org/w3c/dom/stylesheets/.libs org/w3c/dom/stylesheets/_libs
-       -rm -rf org/w3c/dom/traversal/.libs org/w3c/dom/traversal/_libs
-       -rm -rf org/w3c/dom/views/.libs org/w3c/dom/views/_libs
-       -rm -rf org/w3c/dom/xpath/.libs org/w3c/dom/xpath/_libs
 
 distclean-libtool:
        -rm -f libtool
@@ -1629,6 +662,9 @@ check: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) check-am
 all-am: Makefile $(LTLIBRARIES)
 installdirs:
+       for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
+         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+       done
 install: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) install-am
 install-exec: install-exec-am
@@ -1650,28 +686,6 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -rm -f org/w3c/dom/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/$(am__dirstamp)
-       -rm -f org/w3c/dom/bootstrap/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/bootstrap/$(am__dirstamp)
-       -rm -f org/w3c/dom/css/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/css/$(am__dirstamp)
-       -rm -f org/w3c/dom/events/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/events/$(am__dirstamp)
-       -rm -f org/w3c/dom/html2/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/html2/$(am__dirstamp)
-       -rm -f org/w3c/dom/ls/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/ls/$(am__dirstamp)
-       -rm -f org/w3c/dom/ranges/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/ranges/$(am__dirstamp)
-       -rm -f org/w3c/dom/stylesheets/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/stylesheets/$(am__dirstamp)
-       -rm -f org/w3c/dom/traversal/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/traversal/$(am__dirstamp)
-       -rm -f org/w3c/dom/views/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/views/$(am__dirstamp)
-       -rm -f org/w3c/dom/xpath/$(DEPDIR)/$(am__dirstamp)
-       -rm -f org/w3c/dom/xpath/$(am__dirstamp)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -1679,11 +693,11 @@ maintainer-clean-generic:
        -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+clean-am: clean-generic clean-libtool clean-toolexeclibLTLIBRARIES \
        mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf org/w3c/dom/$(DEPDIR) org/w3c/dom/bootstrap/$(DEPDIR) org/w3c/dom/css/$(DEPDIR) org/w3c/dom/events/$(DEPDIR) org/w3c/dom/html2/$(DEPDIR) org/w3c/dom/ls/$(DEPDIR) org/w3c/dom/ranges/$(DEPDIR) org/w3c/dom/stylesheets/$(DEPDIR) org/w3c/dom/traversal/$(DEPDIR) org/w3c/dom/views/$(DEPDIR) org/w3c/dom/xpath/$(DEPDIR)
+       -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-libtool distclean-tags
@@ -1700,7 +714,7 @@ info-am:
 
 install-data-am:
 
-install-exec-am:
+install-exec-am: install-toolexeclibLTLIBRARIES
 
 install-info: install-info-am
 
@@ -1709,7 +723,7 @@ install-man:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf org/w3c/dom/$(DEPDIR) org/w3c/dom/bootstrap/$(DEPDIR) org/w3c/dom/css/$(DEPDIR) org/w3c/dom/events/$(DEPDIR) org/w3c/dom/html2/$(DEPDIR) org/w3c/dom/ls/$(DEPDIR) org/w3c/dom/ranges/$(DEPDIR) org/w3c/dom/stylesheets/$(DEPDIR) org/w3c/dom/traversal/$(DEPDIR) org/w3c/dom/views/$(DEPDIR) org/w3c/dom/xpath/$(DEPDIR)
+       -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1726,29 +740,33 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am: uninstall-info-am uninstall-toolexeclibLTLIBRARIES
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+       clean-libtool clean-toolexeclibLTLIBRARIES ctags distclean \
        distclean-compile distclean-generic distclean-libtool \
        distclean-tags distdir dvi dvi-am html html-am info info-am \
        install install-am install-data install-data-am install-exec \
        install-exec-am install-info install-info-am install-man \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       mostlyclean-local pdf pdf-am ps ps-am tags uninstall \
-       uninstall-am uninstall-info-am
+       install-strip install-toolexeclibLTLIBRARIES installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+       pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \
+       uninstall-toolexeclibLTLIBRARIES
+
 
+w3c.jar: classes.stamp
+       find org -name '*.class' -print | $(ZIP) -cfME@ $@
 
-classes.stamp: $(libw3c_convenience_la_SOURCES)
+classes.stamp: $(source_files)
        here=`pwd`; cd $(srcdir); \
-       $(GCJ_WITH_FLAGS) -C -d $$here $(libw3c_convenience_la_SOURCES)
+       $(GCJ_WITH_FLAGS) -C -d $$here $(source_files)
        echo > classes.stamp
 
 mostlyclean-local:
        -find . -name '*.class' | xargs rm
-       -rm classes.stamp
+       -rm classes.stamp w3c.jar
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index dcb332a..ebf125d 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.3 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
diff --git a/libjava/gnu/gcj/runtime/BootClassLoader.java b/libjava/gnu/gcj/runtime/BootClassLoader.java
new file mode 100644 (file)
index 0000000..6223c73
--- /dev/null
@@ -0,0 +1,102 @@
+/* Copyright (C) 2005  Free Software Foundation
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+package gnu.gcj.runtime;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.StringTokenizer;
+
+/**
+ * This is a helper for the bootstrap class loader.  It is a
+ * URLClassLoader so that we can read a class path and re-use all the
+ * existing code for finding classes, extracting them from jars, etc.
+ * However, it is never called the way that an ordinary ClassLoader is
+ * called.  For instance, loadClass() is never used.
+ */
+public final class BootClassLoader extends URLClassLoader
+{
+  BootClassLoader(String libdir)
+  {
+    super(new URL[0]);
+
+    // Add the contents of the endorsed directories.
+    StringTokenizer st
+      = new StringTokenizer (System.getProperty ("java.endorsed.dirs", ""),
+                            File.pathSeparator);
+    try
+      {
+       while (st.hasMoreElements ())
+         {
+           String dirname = st.nextToken ();
+           File dir = new File (dirname);
+            if (dir.exists ())
+             {
+               if (! dirname.endsWith (File.separator))
+                 dirname = dirname + File.separator;
+               String files[] = dir.list (new FilenameFilter ()
+                 {
+                   public boolean accept (File dir, String name)
+                   {
+                     return name.endsWith (".jar") || name.endsWith (".zip");
+                   }
+                 });
+               for (int i = files.length - 1; i >= 0; i--)
+                 addURL(new URL("file", "", -1, dirname + files[i]));
+             }
+         }
+
+       String w3clib = (libdir + File.separator
+                        + System.mapLibraryName ("w3c-gcj"));
+       addURL(new URL("gcjlib", "", -1, w3clib));
+       String saxlib = (libdir + File.separator
+                        + System.mapLibraryName ("sax-gcj"));
+       addURL(new URL("gcjlib", "", -1, saxlib));
+      }
+    catch (java.net.MalformedURLException x)
+      {
+       // This should never happen.
+       throw new RuntimeException(x);
+      }
+  }
+
+  public Class bootLoadClass(String name)
+    throws ClassNotFoundException
+  {
+    Class c = findLoadedClass(name);
+    if (c == null)
+      {
+       try
+         {
+           // We could hack URLClassLoader to make this more
+           // efficient, if it mattered.
+           c = findClass(name);
+         }
+       catch (ClassNotFoundException _)
+         {
+           c = null;
+         }
+      }
+    return c;
+  }
+
+  public URL bootGetResource(String name)
+  {
+    return findResource(name);
+  }
+
+  public Enumeration bootGetResources(String name) throws IOException
+  {
+    return findResources(name);
+  }
+}
index 006dc13..ff585a8 100644 (file)
@@ -60,137 +60,172 @@ import javax.xml.parsers.SAXParserFactory;
  *
  * @author David Brownell
  */
-public final class JAXPFactory extends SAXParserFactory
+public final class JAXPFactory
+  extends SAXParserFactory
 {
-    private Hashtable  flags = new Hashtable ();
-
-    /**
-     * Constructs a factory which normally returns a non-validating
-     * parser.
-     */
-    public JAXPFactory () { }
-
-    public SAXParser newSAXParser ()
+  
+  private Hashtable flags = new Hashtable();
+
+  /**
+   * Constructs a factory which normally returns a non-validating
+   * parser.
+   */
+  public JAXPFactory()
+  {
+  }
+
+  public SAXParser newSAXParser()
     throws ParserConfigurationException, SAXException
+  {
+    JaxpParser jaxp = new JaxpParser();
+    Enumeration e = flags.keys();
+    XMLReader parser = jaxp.getXMLReader();
+
+    parser.setFeature(SAXDriver.FEATURE + "namespaces",
+                      isNamespaceAware());
+    parser.setFeature(SAXDriver.FEATURE + "validation",
+                      isValidating());
+    // that makes SAX2 feature flags trump JAXP
+    
+    while (e.hasMoreElements())
+      {
+        String uri = (String) e.nextElement();
+        Boolean value = (Boolean) flags.get(uri);
+        parser.setFeature(uri, value.booleanValue());
+      }
+
+    return jaxp;
+  }
+
+  // yes, this "feature transfer" mechanism doesn't play well
+  
+  public void setFeature(String name, boolean value) 
+    throws ParserConfigurationException, SAXNotRecognizedException,
+           SAXNotSupportedException
+  {
+    try
+      {
+        // force "early" detection of errors where possible
+        // (flags can't necessarily be set before parsing)
+        new JaxpParser().getXMLReader().setFeature(name, value);
+        
+        flags.put(name, new Boolean(value));
+      }
+    catch (SAXNotRecognizedException e)
+      {
+        throw new SAXNotRecognizedException(name);
+      }
+    catch (SAXNotSupportedException e)
+      {
+        throw new SAXNotSupportedException(name);
+      }
+    catch (Exception e)
+      {
+        throw new ParserConfigurationException(e.getClass().getName()
+                                               + ": "
+                                               + e.getMessage());
+      }
+  }
+
+  public boolean getFeature(String name) 
+    throws ParserConfigurationException, SAXNotRecognizedException,
+           SAXNotSupportedException
+  {
+    Boolean value = (Boolean) flags.get(name);
+    
+    if (value != null)
+      {
+        return value.booleanValue();
+      }
+    else
+      {
+        try
+          {
+            return new JaxpParser().getXMLReader().getFeature(name);
+          }
+        catch (SAXNotRecognizedException e)
+          {
+            throw new SAXNotRecognizedException(name);
+          }
+        catch (SAXNotSupportedException e)
+          {
+            throw new SAXNotSupportedException(name);
+          }
+        catch (SAXException e)
+          {
+            throw new ParserConfigurationException(e.getClass().getName()
+                                                   + ": "
+                                                   + e.getMessage());
+          }
+      }
+  }
+           
+  private static class JaxpParser
+    extends SAXParser
+  {
+    
+    private XmlReader ae2 = new XmlReader();
+    private XMLReaderAdapter parser = null;
+    
+    JaxpParser()
     {
-       JaxpParser      jaxp = new JaxpParser ();
-       Enumeration     e = flags.keys ();
-       XMLReader       parser = jaxp.getXMLReader ();
-
-       parser.setFeature (
-               SAXDriver.FEATURE + "namespaces",
-               isNamespaceAware ());
-       parser.setFeature (
-               SAXDriver.FEATURE + "validation",
-               isValidating ());
-       // that makes SAX2 feature flags trump JAXP
-
-       while (e.hasMoreElements ()) {
-           String      uri = (String) e.nextElement ();
-           Boolean     value = (Boolean) flags.get (uri);
-           parser.setFeature (uri, value.booleanValue ());
-       }
-
-       return jaxp;
     }
 
-    // yes, this "feature transfer" mechanism doesn't play well
+    public void setProperty(String id, Object value) 
+      throws SAXNotRecognizedException, SAXNotSupportedException
+    {
+      ae2.setProperty(id, value);
+    }
 
-    public void setFeature (String name, boolean value) 
-    throws
-       ParserConfigurationException,
-       SAXNotRecognizedException,
-       SAXNotSupportedException
+    public Object getProperty(String id) 
+      throws SAXNotRecognizedException, SAXNotSupportedException
     {
-       try {
-           // force "early" detection of errors where possible
-           // (flags can't necessarily be set before parsing)
-           new JaxpParser ().getXMLReader ().setFeature (name, value);
-
-           flags.put (name, new Boolean (value));
-       } catch (SAXNotRecognizedException e) {
-           throw new SAXNotRecognizedException (name);
-       } catch (SAXNotSupportedException e) {
-           throw new SAXNotSupportedException (name);
-       } catch (Exception e) {
-           throw new ParserConfigurationException (
-                 e.getClass ().getName ()
-               + ": "
-               + e.getMessage ());
-       }
+      return ae2.getProperty(id);
     }
 
-    public boolean getFeature (String name) 
-    throws
-       ParserConfigurationException,
-       SAXNotRecognizedException,
-       SAXNotSupportedException
+    public Parser getParser()
+      throws SAXException
     {
-       Boolean value = (Boolean) flags.get (name);
-       
-       if (value != null)
-           return value.booleanValue ();
-       else
-           try {
-               return new JaxpParser ().getXMLReader ().getFeature (name);
-           } catch (SAXNotRecognizedException e) {
-               throw new SAXNotRecognizedException (name);
-           } catch (SAXNotSupportedException e) {
-               throw new SAXNotSupportedException (name);
-           } catch (SAXException e) {
-               throw new ParserConfigurationException (
-                     e.getClass ().getName ()
-                   + ": "
-                   + e.getMessage ());
-           }
+      if (parser == null)
+        {
+          parser = new XMLReaderAdapter(ae2);
+        }
+      return parser;
     }
 
-    private static class JaxpParser extends SAXParser
+    public XMLReader getXMLReader ()
+      throws SAXException
     {
-       private XmlReader       ae2 = new XmlReader ();
-       private XMLReaderAdapter parser = null;
-
-       JaxpParser () { }
-
-       public void setProperty (String id, Object value) 
-       throws SAXNotRecognizedException, SAXNotSupportedException
-           { ae2.setProperty (id, value); }
-
-       public Object getProperty (String id) 
-       throws SAXNotRecognizedException, SAXNotSupportedException
-           { return ae2.getProperty (id); }
-
-       public Parser getParser ()
-       throws SAXException
-       { 
-           if (parser == null)
-               parser = new XMLReaderAdapter (ae2);
-           return parser;
-       }
-
-       public XMLReader getXMLReader ()
-       throws SAXException
-           { return ae2; }
-
-       public boolean isNamespaceAware ()
-       {
-           try {
-               return ae2.getFeature (SAXDriver.FEATURE + "namespaces");
-           } catch (Exception e) {
-               throw new Error ();
-           }
-       }
-
-       public boolean isValidating ()
-       {
-           try {
-               return ae2.getFeature (SAXDriver.FEATURE + "validation");
-           } catch (Exception e) {
-               throw new Error ();
-           }
-       }
-
-        // TODO isXIncludeAware()
-        
+      return ae2;
     }
+
+    public boolean isNamespaceAware()
+    {
+      try
+        {
+          return ae2.getFeature(SAXDriver.FEATURE + "namespaces");
+        }
+      catch (Exception e)
+        {
+          throw new Error();
+        }
+    }
+    
+    public boolean isValidating()
+    {
+      try
+        {
+          return ae2.getFeature(SAXDriver.FEATURE + "validation");
+        }
+      catch (Exception e)
+        {
+          throw new Error();
+        }
+    }
+    
+    // TODO isXIncludeAware()
+    
+  }
+  
 }
+
index 0e7b3c7..003a736 100644 (file)
@@ -60,15 +60,11 @@ import java.net.URL;
 import java.util.Locale;
 import java.util.Stack;
 
-// maintaining 1.1 compatibility for now ... more portable, PJava, etc
-// Iterator, Hashmap and ArrayList ought to be faster
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
-import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Vector;
 
 import org.xml.sax.*;
 import org.xml.sax.ext.*;
@@ -133,1276 +129,1494 @@ import org.xml.sax.helpers.NamespaceSupport;
  * @see org.xml.sax.Parser
  */
 final public class SAXDriver
-    implements Locator, Attributes2, XMLReader, Parser, AttributeList
+  implements Locator, Attributes2, XMLReader, Parser, AttributeList
 {
-    private final DefaultHandler2      base = new DefaultHandler2 ();
-    private XmlParser                  parser;
-
-    private EntityResolver             entityResolver = base;
-    private EntityResolver2            resolver2 = null;
-    private ContentHandler             contentHandler = base;
-    private DTDHandler                 dtdHandler = base;
-    private ErrorHandler               errorHandler = base;
-    private DeclHandler                        declHandler = base;
-    private LexicalHandler             lexicalHandler = base;
-
-    private String                     elementName;
-    private Stack                      entityStack;
-
-    // one vector (of object/struct): faster, smaller
-    private List                       attributesList;
-
-    private boolean                    namespaces = true;
-    private boolean                    xmlNames = false;
-    private boolean                    extGE = true;
-    private boolean                    extPE = true;
-    private boolean                    resolveAll = true;
-    private boolean                    useResolver2 = true;
-    private boolean                     stringInterning = true;
-
-    private int                                attributeCount;
-    private boolean                    attributes;
-    private String                     nsTemp [];
-    private NamespaceSupport           prefixStack;
+  
+  private final DefaultHandler2 base = new DefaultHandler2();
+  private XmlParser parser;
+  
+  private EntityResolver entityResolver = base;
+  private EntityResolver2 resolver2 = null;
+  private ContentHandler contentHandler = base;
+  private DTDHandler dtdHandler = base;
+  private ErrorHandler errorHandler = base;
+  private DeclHandler declHandler = base;
+  private LexicalHandler lexicalHandler = base;
+  
+  private String elementName;
+  private Stack entityStack;
+  
+  // one vector (of object/struct): faster, smaller
+  private List attributesList;
+  
+  private boolean namespaces = true;
+  private boolean xmlNames = false;
+  private boolean extGE = true;
+  private boolean extPE = true;
+  private boolean resolveAll = true;
+  private boolean useResolver2 = true;
+  
+  // package private to allow (read-only) access in XmlParser
+  boolean stringInterning = true;
+  
+  private int attributeCount;
+  private boolean attributes;
+  private String[] nsTemp;
+  private NamespaceSupport prefixStack;
+  
+  //
+  // Constructor.
+  //
+
+  /**
+   * Constructs a SAX Parser.
+   */
+  public SAXDriver()
+  {
+    reset();
+  }
 
-    //
-    // Constructor.
-    //
+  private void reset()
+  {
+    elementName = null;
+    entityStack = new Stack();
+    attributesList = Collections.synchronizedList(new ArrayList());
+    attributeCount = 0;
+    attributes = false;
+    nsTemp = new String[3];
+    prefixStack = null;
+  }
 
-    /** Constructs a SAX Parser.  */
-    public SAXDriver ()
-    {
-      reset ();
-    }
 
-    private void reset ()
-    {
-      elementName = null;
-      entityStack = new Stack ();
-      attributesList = Collections.synchronizedList(new ArrayList());
-      attributeCount = 0;
-      attributes = false;
-      nsTemp = new String[3];
-      prefixStack = null;
-    }
+  //
+  // Implementation of org.xml.sax.Parser.
+  //
 
+  /**
+   * <b>SAX1</b>: Sets the locale used for diagnostics; currently,
+   * only locales using the English language are supported.
+   * @param locale The locale for which diagnostics will be generated
+   */
+  public void setLocale(Locale locale)
+    throws SAXException
+  {
+    if ("en".equals(locale.getLanguage()))
+      {
+        return;
+      }
+    throw new SAXException ("AElfred2 only supports English locales.");
+  }
 
-    //
-    // Implementation of org.xml.sax.Parser.
-    //
+  /**
+   * <b>SAX2</b>: Returns the object used when resolving external
+   * entities during parsing (both general and parameter entities).
+   */
+  public EntityResolver getEntityResolver()
+  {
+    return (entityResolver == base) ? null : entityResolver;
+  }
 
-    /**
-     * <b>SAX1</b>: Sets the locale used for diagnostics; currently,
-     * only locales using the English language are supported.
-     * @param locale The locale for which diagnostics will be generated
-     */
-    public void setLocale (Locale locale)
-    throws SAXException
-    {
-       if ("en".equals (locale.getLanguage ()))
-           return ;
+  /**
+   * <b>SAX1, SAX2</b>: Set the entity resolver for this parser.
+   * @param handler The object to receive entity events.
+   */
+  public void setEntityResolver(EntityResolver resolver)
+  {
+    if (resolver instanceof EntityResolver2)
+      {
+        resolver2 = (EntityResolver2) resolver;
+      }
+    else
+      {
+        resolver2 = null;
+      }
+    if (resolver == null)
+      {
+        resolver = base;
+      }
+    entityResolver = resolver;
+  }
 
-       throw new SAXException ("AElfred2 only supports English locales.");
-    }
+  /**
+   * <b>SAX2</b>: Returns the object used to process declarations related
+   * to notations and unparsed entities.
+   */
+  public DTDHandler getDTDHandler()
+  {
+    return (dtdHandler == base) ? null : dtdHandler;
+  }
 
+  /**
+   * <b>SAX1, SAX2</b>: Set the DTD handler for this parser.
+   * @param handler The object to receive DTD events.
+   */
+  public void setDTDHandler(DTDHandler handler)
+  {
+    if (handler == null)
+      {
+        handler = base;
+      }
+    this.dtdHandler = handler;
+  }
 
-    /**
-     * <b>SAX2</b>: Returns the object used when resolving external
-     * entities during parsing (both general and parameter entities).
-     */
-    public EntityResolver getEntityResolver ()
-    {
-       return (entityResolver == base) ? null : entityResolver;
-    }
 
-    /**
-     * <b>SAX1, SAX2</b>: Set the entity resolver for this parser.
-     * @param handler The object to receive entity events.
-     */
-    public void setEntityResolver (EntityResolver resolver)
-    {
-       if (resolver instanceof EntityResolver2)
-           resolver2 = (EntityResolver2) resolver;
-       else
-           resolver2 = null;
-       if (resolver == null)
-           resolver = base;
-       entityResolver = resolver;
-    }
+  /**
+   * <b>SAX1</b>: Set the document handler for this parser.  If a
+   * content handler was set, this document handler will supplant it.
+   * The parser is set to report all XML 1.0 names rather than to
+   * filter out "xmlns" attributes (the "namespace-prefixes" feature
+   * is set to true).
+   *
+   * @deprecated SAX2 programs should use the XMLReader interface
+   *  and a ContentHandler.
+   *
+   * @param handler The object to receive document events.
+   */
+  public void setDocumentHandler(DocumentHandler handler)
+  {
+    contentHandler = new Adapter(handler);
+    xmlNames = true;
+  }
 
+  /**
+   * <b>SAX2</b>: Returns the object used to report the logical
+   * content of an XML document.
+   */
+  public ContentHandler getContentHandler()
+  {
+    return (contentHandler == base) ? null : contentHandler;
+  }
 
-    /**
-     * <b>SAX2</b>: Returns the object used to process declarations related
-     * to notations and unparsed entities.
-     */
-    public DTDHandler getDTDHandler ()
-    {
-       return (dtdHandler == base) ? null : dtdHandler;
-    }
+  /**
+   * <b>SAX2</b>: Assigns the object used to report the logical
+   * content of an XML document.  If a document handler was set,
+   * this content handler will supplant it (but XML 1.0 style name
+   * reporting may remain enabled).
+   */
+  public void setContentHandler(ContentHandler handler)
+  {
+    if (handler == null)
+      {
+        handler = base;
+      }
+    contentHandler = handler;
+  }
 
-    /**
-     * <b>SAX1, SAX2</b>: Set the DTD handler for this parser.
-     * @param handler The object to receive DTD events.
-     */
-    public void setDTDHandler (DTDHandler handler)
-    {
-       if (handler == null)
-           handler = base;
-       this.dtdHandler = handler;
-    }
+  /**
+   * <b>SAX1, SAX2</b>: Set the error handler for this parser.
+   * @param handler The object to receive error events.
+   */
+  public void setErrorHandler(ErrorHandler handler)
+  {
+    if (handler == null)
+      {
+        handler = base;
+      }
+    this.errorHandler = handler;
+  }
 
+  /**
+   * <b>SAX2</b>: Returns the object used to receive callbacks for XML
+   * errors of all levels (fatal, nonfatal, warning); this is never null;
+   */
+  public ErrorHandler getErrorHandler()
+  {
+    return (errorHandler == base) ? null : errorHandler;
+  }
 
-    /**
-     * <b>SAX1</b>: Set the document handler for this parser.  If a
-     * content handler was set, this document handler will supplant it.
-     * The parser is set to report all XML 1.0 names rather than to
-     * filter out "xmlns" attributes (the "namespace-prefixes" feature
-     * is set to true).
-     *
-     * @deprecated SAX2 programs should use the XMLReader interface
-     * and a ContentHandler.
-     *
-     * @param handler The object to receive document events.
-     */
-    public void setDocumentHandler (DocumentHandler handler)
-    {
-       contentHandler = new Adapter (handler);
-       xmlNames = true;
-    }
+  /**
+   * <b>SAX1, SAX2</b>: Auxiliary API to parse an XML document, used mostly
+   * when no URI is available.
+   * If you want anything useful to happen, you should set
+   * at least one type of handler.
+   * @param source The XML input source.  Don't set 'encoding' unless
+   *  you know for a fact that it's correct.
+   * @see #setEntityResolver
+   * @see #setDTDHandler
+   * @see #setContentHandler
+   * @see #setErrorHandler
+   * @exception SAXException The handlers may throw any SAXException,
+   *  and the parser normally throws SAXParseException objects.
+   * @exception IOException IOExceptions are normally through through
+   *  the parser if there are problems reading the source document.
+   */
+  public void parse(InputSource source)
+    throws SAXException, IOException
+  {
+    synchronized (base)
+      {
+        parser = new XmlParser();
+        if (namespaces)
+          {
+            prefixStack = new NamespaceSupport();
+          }
+        else if (!xmlNames)
+          {
+            throw new IllegalStateException();
+          }
+        parser.setHandler(this);
+        
+        try
+          {
+            Reader r = source.getCharacterStream();
+            InputStream in = source.getByteStream();
+                        
+            parser.doParse(source.getSystemId(),
+                           source.getPublicId(),
+                           r,
+                           in,
+                           source.getEncoding());
+          }
+        catch (SAXException e)
+          {
+            throw e;
+          }
+        catch (IOException e)
+          {
+            throw e;
+          }
+        catch (RuntimeException e)
+          {
+            throw e;
+          }
+        catch (Exception e)
+          {
+            throw new SAXParseException(e.getMessage(), this, e);
+          }
+        finally
+          {
+            contentHandler.endDocument();
+            reset();
+          }
+      }
+  }
 
-    /**
-     * <b>SAX2</b>: Returns the object used to report the logical
-     * content of an XML document.
-     */
-    public ContentHandler getContentHandler ()
-    {
-       return contentHandler == base ? null : contentHandler;
-    }
+  /**
+   * <b>SAX1, SAX2</b>: Preferred API to parse an XML document, using a
+   * system identifier (URI).
+   */
+  public void parse(String systemId)
+    throws SAXException, IOException
+  {
+    parse(new InputSource(systemId));
+  }
 
-    /**
-     * <b>SAX2</b>: Assigns the object used to report the logical
-     * content of an XML document.  If a document handler was set,
-     * this content handler will supplant it (but XML 1.0 style name
-     * reporting may remain enabled).
-     */
-    public void setContentHandler (ContentHandler handler)
-    {
-       if (handler == null)
-           handler = base;
-       contentHandler = handler;
-    }
+  //
+  // Implementation of SAX2 "XMLReader" interface
+  //
+  static final String FEATURE = "http://xml.org/sax/features/";
+  static final String PROPERTY = "http://xml.org/sax/properties/";
+
+  /**
+   * <b>SAX2</b>: Tells the value of the specified feature flag.
+   *
+   * @exception SAXNotRecognizedException thrown if the feature flag
+   *  is neither built in, nor yet assigned.
+   */
+  public boolean getFeature(String featureId)
+    throws SAXNotRecognizedException, SAXNotSupportedException
+  {
+    if ((FEATURE + "validation").equals(featureId))
+      {
+        return false;
+      }
 
-    /**
-     * <b>SAX1, SAX2</b>: Set the error handler for this parser.
-     * @param handler The object to receive error events.
-     */
-    public void setErrorHandler (ErrorHandler handler)
-    {
-       if (handler == null)
-           handler = base;
-       this.errorHandler = handler;
-    }
+    // external entities (both types) are optionally included
+    if ((FEATURE + "external-general-entities").equals(featureId))
+      {
+        return extGE;
+      }
+    if ((FEATURE + "external-parameter-entities").equals(featureId))
+      {
+        return extPE;
+      }
+    
+    // element/attribute names are as written in document; no mangling
+    if ((FEATURE + "namespace-prefixes").equals(featureId))
+      {
+        return xmlNames;
+      }
 
-    /**
-     * <b>SAX2</b>: Returns the object used to receive callbacks for XML
-     * errors of all levels (fatal, nonfatal, warning); this is never null;
-     */
-    public ErrorHandler getErrorHandler ()
-       { return errorHandler == base ? null : errorHandler; }
-
-
-    /**
-     * <b>SAX1, SAX2</b>: Auxiliary API to parse an XML document, used mostly
-     * when no URI is available.
-     * If you want anything useful to happen, you should set
-     * at least one type of handler.
-     * @param source The XML input source.  Don't set 'encoding' unless
-     * you know for a fact that it's correct.
-     * @see #setEntityResolver
-     * @see #setDTDHandler
-     * @see #setContentHandler
-     * @see #setErrorHandler
-     * @exception SAXException The handlers may throw any SAXException,
-     * and the parser normally throws SAXParseException objects.
-     * @exception IOException IOExceptions are normally through through
-     * the parser if there are problems reading the source document.
-     */
-    public void parse (InputSource source)
-    throws SAXException, IOException
-    {
-       synchronized (base) {
-           parser = new XmlParser ();
-           if (namespaces)
-               prefixStack = new NamespaceSupport ();
-           else if (!xmlNames)
-               throw new IllegalStateException ();
-           parser.setHandler (this);
-
-           try {
-
-             Reader r = source.getCharacterStream();
-             InputStream in = source.getByteStream();
-
-             
-               parser.doParse (source.getSystemId (),
-                             source.getPublicId (),
-                             r,
-                             in,
-                             source.getEncoding ());
-           } catch (SAXException e) {
-               throw e;
-           } catch (IOException e) {
-               throw e;
-           } catch (RuntimeException e) {
-               throw e;
-           } catch (Exception e) {
-               throw new SAXParseException (e.getMessage (), this, e);
-           } finally {
-               contentHandler.endDocument ();
-                reset();
-           }
-       }
-    }
+    // report element/attribute namespaces?
+    if ((FEATURE + "namespaces").equals(featureId))
+      {
+        return namespaces;
+      }
 
+    // all PEs and GEs are reported
+    if ((FEATURE + "lexical-handler/parameter-entities").equals(featureId))
+      {
+        return true;
+      }
 
-    /**
-     * <b>SAX1, SAX2</b>: Preferred API to parse an XML document, using a
-     * system identifier (URI).
-     */
-    public void parse (String systemId)
-    throws SAXException, IOException
-    {
-       parse (new InputSource (systemId));
-    }
+    // default is true
+    if ((FEATURE + "string-interning").equals(featureId))
+      {
+        return stringInterning;
+      }
+  
+    // EXTENSIONS 1.1
+    
+    // always returns isSpecified info
+    if ((FEATURE + "use-attributes2").equals(featureId))
+      {
+        return true;
+      }
+  
+    // meaningful between startDocument/endDocument
+    if ((FEATURE + "is-standalone").equals(featureId))
+      {
+        if (parser == null)
+          {
+            throw new SAXNotSupportedException(featureId);
+          }
+        return parser.isStandalone();
+      }
 
-    //
-    // Implementation of SAX2 "XMLReader" interface
-    //
-    static final String        FEATURE = "http://xml.org/sax/features/";
-    static final String        PROPERTY = "http://xml.org/sax/properties/";
-
-    /**
-     * <b>SAX2</b>: Tells the value of the specified feature flag.
-     *
-     * @exception SAXNotRecognizedException thrown if the feature flag
-     * is neither built in, nor yet assigned.
-     */
-    public boolean getFeature (String featureId)
-    throws SAXNotRecognizedException, SAXNotSupportedException
-    {
-       if ((FEATURE + "validation").equals (featureId))
-           return false;
-
-       // external entities (both types) are optionally included
-       if ((FEATURE + "external-general-entities").equals (featureId))
-           return extGE;
-       if ((FEATURE + "external-parameter-entities") .equals (featureId))
-           return extPE;
-
-       // element/attribute names are as written in document; no mangling
-       if ((FEATURE + "namespace-prefixes").equals (featureId))
-           return xmlNames;
-
-       // report element/attribute namespaces?
-       if ((FEATURE + "namespaces").equals (featureId))
-           return namespaces;
-
-       // all PEs and GEs are reported
-       if ((FEATURE + "lexical-handler/parameter-entities").equals (featureId))
-           return true;
-
-       // default is true
-       if ((FEATURE + "string-interning").equals (featureId))
-           return stringInterning;
-       
-       // EXTENSIONS 1.1
-
-       // always returns isSpecified info
-       if ((FEATURE + "use-attributes2").equals (featureId))
-           return true;
-       
-       // meaningful between startDocument/endDocument
-       if ((FEATURE + "is-standalone").equals (featureId)) {
-           if (parser == null)
-               throw new SAXNotSupportedException (featureId);
-           return parser.isStandalone ();
-       }
-
-       // optionally don't absolutize URIs in declarations
-       if ((FEATURE + "resolve-dtd-uris").equals (featureId))
-           return resolveAll;
-
-       // optionally use resolver2 interface methods, if possible
-       if ((FEATURE + "use-entity-resolver2").equals (featureId))
-           return useResolver2;
-       
-       throw new SAXNotRecognizedException (featureId);
-    }
+    // optionally don't absolutize URIs in declarations
+    if ((FEATURE + "resolve-dtd-uris").equals(featureId))
+      {
+        return resolveAll;
+      }
+
+    // optionally use resolver2 interface methods, if possible
+    if ((FEATURE + "use-entity-resolver2").equals(featureId))
+      {
+        return useResolver2;
+      }
+  
+    throw new SAXNotRecognizedException(featureId);
+  }
 
-    // package private
-    DeclHandler getDeclHandler () { return declHandler; }
+  // package private
+  DeclHandler getDeclHandler()
+  {
+    return declHandler;
+  }
 
-    // package private
-    boolean resolveURIs () { return resolveAll; }
+  // package private
+  boolean resolveURIs()
+  {
+    return resolveAll;
+  }
 
-    /**
-     * <b>SAX2</b>:  Returns the specified property.
-     *
-     * @exception SAXNotRecognizedException thrown if the property value
-     * is neither built in, nor yet stored.
-     */
-    public Object getProperty (String propertyId)
+  /**
+   * <b>SAX2</b>:  Returns the specified property.
+   *
+   * @exception SAXNotRecognizedException thrown if the property value
+    is neither built in, nor yet stored.
+   */
+  public Object getProperty(String propertyId)
     throws SAXNotRecognizedException
-    {
-       if ((PROPERTY + "declaration-handler").equals (propertyId))
-           return declHandler == base ? null : declHandler;
-
-       if ((PROPERTY + "lexical-handler").equals (propertyId))
-           return lexicalHandler == base ? null : lexicalHandler;
-       
-       // unknown properties
-       throw new SAXNotRecognizedException (propertyId);
-    }
+  {
+    if ((PROPERTY + "declaration-handler").equals(propertyId))
+      {
+        return (declHandler == base) ? null : declHandler;
+      }
 
-    /**
-     * <b>SAX2</b>:  Sets the state of feature flags in this parser.  Some
-     * built-in feature flags are mutable.
-     */
-    public void setFeature (String featureId, boolean value)
-    throws SAXNotRecognizedException, SAXNotSupportedException
-    {
-       boolean state;
-       
-       // Features with a defined value, we just change it if we can.
-       state = getFeature (featureId);
-
-       if (state == value)
-           return;
-       if (parser != null)
-           throw new SAXNotSupportedException ("not while parsing");
-
-       if ((FEATURE + "namespace-prefixes").equals (featureId)) {
-           // in this implementation, this only affects xmlns reporting
-           xmlNames = value;
-           // forcibly prevent illegal parser state
-           if (!xmlNames)
-               namespaces = true;
-           return;
-       }
-
-       if ((FEATURE + "namespaces").equals (featureId)) {
-           namespaces = value;
-           // forcibly prevent illegal parser state
-           if (!namespaces)
-               xmlNames = true;
-           return;
-       }
-
-       if ((FEATURE + "external-general-entities").equals (featureId)) {
-           extGE = value;
-           return;
-       }
-       if ((FEATURE + "external-parameter-entities") .equals (featureId)) {
-           extPE = value;
-           return;
-       }
-       if ((FEATURE + "resolve-dtd-uris").equals (featureId)) {
-           resolveAll = value;
-           return;
-       }
-
-       if ((FEATURE + "use-entity-resolver2").equals (featureId)) {
-           useResolver2 = value;
-           return;
-       }
-
-       throw new SAXNotRecognizedException (featureId);
-    }
+    if ((PROPERTY + "lexical-handler").equals(propertyId))
+      {
+        return (lexicalHandler == base) ? null : lexicalHandler;
+      }
+    
+    // unknown properties
+    throw new SAXNotRecognizedException(propertyId);
+  }
 
-    /**
-     * <b>SAX2</b>:  Assigns the specified property.  Like SAX1 handlers,
-     * these may be changed at any time.
-     */
-    public void setProperty (String propertyId, Object value)
+  /**
+   * <b>SAX2</b>:  Sets the state of feature flags in this parser.  Some
+   * built-in feature flags are mutable.
+   */
+  public void setFeature(String featureId, boolean value)
     throws SAXNotRecognizedException, SAXNotSupportedException
-    {
-       // see if the property is recognized
-       getProperty (propertyId);
-
-       // Properties with a defined value, we just change it if we can.
-
-       if ((PROPERTY + "declaration-handler").equals (propertyId)) {
-           if (value == null)
-               declHandler = base;
-           else if (! (value instanceof DeclHandler))
-               throw new SAXNotSupportedException (propertyId);
-           else
-               declHandler = (DeclHandler) value;
-           return ;
-       }
-
-       if ((PROPERTY + "lexical-handler").equals (propertyId)) {
-           if (value == null)
-               lexicalHandler = base;
-           else if (! (value instanceof LexicalHandler))
-               throw new SAXNotSupportedException (propertyId);
-           else
-               lexicalHandler = (LexicalHandler) value;
-           return ;
-       }
-
-       throw new SAXNotSupportedException (propertyId);
-    }
+  {
+    boolean state;
+  
+    // Features with a defined value, we just change it if we can.
+    state = getFeature (featureId);
+    
+    if (state == value)
+      {
+        return;
+      }
+    if (parser != null)
+      {
+        throw new SAXNotSupportedException("not while parsing");
+      }
 
+    if ((FEATURE + "namespace-prefixes").equals(featureId))
+      {
+        // in this implementation, this only affects xmlns reporting
+        xmlNames = value;
+        // forcibly prevent illegal parser state
+        if (!xmlNames)
+          {
+            namespaces = true;
+          }
+        return;
+      }
 
-    //
-    // This is where the driver receives XmlParser callbacks and translates
-    // them into SAX callbacks.  Some more callbacks have been added for
-    // SAX2 support.
-    //
+    if ((FEATURE + "namespaces").equals(featureId))
+      {
+        namespaces = value;
+        // forcibly prevent illegal parser state
+        if (!namespaces)
+          {
+            xmlNames = true;
+          }
+        return;
+      }
+
+    if ((FEATURE + "external-general-entities").equals(featureId))
+      {
+        extGE = value;
+        return;
+      }
+    if ((FEATURE + "external-parameter-entities").equals(featureId))
+      {
+        extPE = value;
+        return;
+      }
+    if ((FEATURE + "resolve-dtd-uris").equals(featureId))
+      {
+        resolveAll = value;
+        return;
+      }
 
-    void startDocument ()
+    if ((FEATURE + "use-entity-resolver2").equals(featureId))
+      {
+        useResolver2 = value;
+        return;
+      }
+
+    throw new SAXNotRecognizedException(featureId);
+  }
+
+  /**
+   * <b>SAX2</b>:  Assigns the specified property.  Like SAX1 handlers,
+   * these may be changed at any time.
+   */
+  public void setProperty(String propertyId, Object value)
+    throws SAXNotRecognizedException, SAXNotSupportedException
+  {
+    // see if the property is recognized
+    getProperty(propertyId);
+    
+    // Properties with a defined value, we just change it if we can.
+    
+    if ((PROPERTY + "declaration-handler").equals(propertyId))
+      {
+        if (value == null)
+          {
+            declHandler = base;
+          }
+        else if (!(value instanceof DeclHandler))
+          {
+            throw new SAXNotSupportedException(propertyId);
+          }
+        else
+          {
+            declHandler = (DeclHandler) value;
+          }
+        return ;
+      }
+    
+    if ((PROPERTY + "lexical-handler").equals(propertyId))
+      {
+        if (value == null)
+          {
+            lexicalHandler = base;
+          }
+        else if (!(value instanceof LexicalHandler))
+          {
+            throw new SAXNotSupportedException(propertyId);
+          }
+        else
+          {
+            lexicalHandler = (LexicalHandler) value;
+          }
+        return;
+      }
+    
+    throw new SAXNotSupportedException(propertyId);
+  }
+
+  //
+  // This is where the driver receives XmlParser callbacks and translates
+  // them into SAX callbacks.  Some more callbacks have been added for
+  // SAX2 support.
+  //
+
+  void startDocument()
     throws SAXException
-    {
-       contentHandler.setDocumentLocator (this);
-       contentHandler.startDocument ();
-       attributesList.clear ();
-    }
+  {
+    contentHandler.setDocumentLocator(this);
+    contentHandler.startDocument();
+    attributesList.clear();
+  }
 
-    void xmlDecl(String version,
-                 String encoding,
-                 boolean standalone,
-                 String inputEncoding)
-      throws SAXException
-    {
-      if (contentHandler instanceof ContentHandler2)
-        {
-          ((ContentHandler2) contentHandler).xmlDecl(version,
-                                                     encoding,
-                                                     standalone,
-                                                     inputEncoding);
-        }
-    }
+  void xmlDecl(String version,
+               String encoding,
+               boolean standalone,
+               String inputEncoding)
+    throws SAXException
+  {
+    if (contentHandler instanceof ContentHandler2)
+      {
+        ((ContentHandler2) contentHandler).xmlDecl(version,
+                                                   encoding,
+                                                   standalone,
+                                                   inputEncoding);
+      }
+  }
 
-    void skippedEntity (String name)
+  void skippedEntity(String name)
     throws SAXException
-       { contentHandler.skippedEntity (name); }
+  {
+    contentHandler.skippedEntity(name);
+  }
 
-    InputSource getExternalSubset (String name, String baseURI)
+  InputSource getExternalSubset(String name, String baseURI)
     throws SAXException, IOException
-    {
-       if (resolver2 == null || !useResolver2 || !extPE)
-           return null;
-       return resolver2.getExternalSubset (name, baseURI);
-    }
+  {
+    if (resolver2 == null || !useResolver2 || !extPE)
+      {
+        return null;
+      }
+    return resolver2.getExternalSubset(name, baseURI);
+  }
 
-    InputSource resolveEntity (boolean isPE, String name,
-       InputSource in, String baseURI)
+  InputSource resolveEntity(boolean isPE, String name,
+                            InputSource in, String baseURI)
     throws SAXException, IOException
-    {
-       InputSource     source;
-
-       // external entities might be skipped
-       if (isPE && !extPE)
-           return null;
-       if (!isPE && !extGE)
-           return null;
-
-       // ... or not
-       lexicalHandler.startEntity (name);
-       if (resolver2 != null && useResolver2) {
-           source = resolver2.resolveEntity (name, in.getPublicId (),
-                       baseURI, in.getSystemId ());
-           if (source == null) {
-               in.setSystemId (absolutize (baseURI,
-                               in.getSystemId (), false));
-               source = in;
-           }
-       } else {
-           in.setSystemId (absolutize (baseURI, in.getSystemId (), false));
-           source = entityResolver.resolveEntity (in.getPublicId (),
-                       in.getSystemId ());
-           if (source == null)
-               source = in;
-       }
-       startExternalEntity (name, source.getSystemId (), true);
-       return source;
-    }
+  {
+    InputSource  source;
+    
+    // external entities might be skipped
+    if (isPE && !extPE)
+      {
+        return null;
+      }
+    if (!isPE && !extGE)
+      {
+        return null;
+      }
 
-    // absolutize a system ID relative to the specified base URI
-    // (temporarily) package-visible for external entity decls
-    String absolutize (String baseURI, String systemId, boolean nice)
+    // ... or not
+    lexicalHandler.startEntity(name);
+    if (resolver2 != null && useResolver2)
+      {
+        source = resolver2.resolveEntity(name, in.getPublicId(),
+                                         baseURI, in.getSystemId());
+        if (source == null)
+          {
+            in.setSystemId(absolutize(baseURI,
+                                      in.getSystemId(), false));
+            source = in;
+          }
+      }
+    else
+      {
+        in.setSystemId(absolutize(baseURI, in.getSystemId(), false));
+        source = entityResolver.resolveEntity(in.getPublicId(),
+                                              in.getSystemId());
+        if (source == null)
+          {
+            source = in;
+          }
+      }
+    startExternalEntity(name, source.getSystemId(), true);
+    return source;
+  }
+
+  // absolutize a system ID relative to the specified base URI
+  // (temporarily) package-visible for external entity decls
+  String absolutize(String baseURI, String systemId, boolean nice)
     throws MalformedURLException, SAXException
-    {
-       // FIXME normalize system IDs -- when?
-       // - Convert to UTF-8
-       // - Map reserved and non-ASCII characters to %HH
-
-       try {
-           if (baseURI == null) {
-               warn ("No base URI; hope this SYSTEM id is absolute: "
-                       + systemId);
-               return new URL (systemId).toString ();
-           } else
-               return new URL (new URL (baseURI), systemId).toString ();
-
-       } catch (MalformedURLException e) {
-
-           // Let unknown URI schemes pass through unless we need
-           // the JVM to map them to i/o streams for us...
-           if (!nice)
-               throw e;
-
-           // sometimes sysids for notations or unparsed entities
-           // aren't really URIs...
-           warn ("Can't absolutize SYSTEM id: " + e.getMessage ());
-           return systemId;
-       }
-    }
+  {
+    // FIXME normalize system IDs -- when?
+    // - Convert to UTF-8
+    // - Map reserved and non-ASCII characters to %HH
+    
+    try
+      {
+        if (baseURI == null)
+          {
+            if (XmlParser.uriWarnings)
+              {
+                warn ("No base URI; hope this SYSTEM id is absolute: "
+                      + systemId);
+              }
+            return new URL(systemId).toString();
+          }
+        else
+          {
+            return new URL(new URL(baseURI), systemId).toString();
+          }
+      }
+    catch (MalformedURLException e)
+      {
+        // Let unknown URI schemes pass through unless we need
+        // the JVM to map them to i/o streams for us...
+        if (!nice)
+          {
+            throw e;
+          }
+        
+        // sometimes sysids for notations or unparsed entities
+        // aren't really URIs...
+        warn("Can't absolutize SYSTEM id: " + e.getMessage());
+        return systemId;
+      }
+  }
 
-    void startExternalEntity (String name, String systemId,
-       boolean stackOnly)
+  void startExternalEntity(String name, String systemId, boolean stackOnly)
     throws SAXException
-    {
-       // The following warning was deleted because the application has the
-       // option of not setting systemId. Sun's JAXP or Xerces seems to
-       // ignore this case.
-       /*
-       if (systemId == null)
-           warn ("URI was not reported to parser for entity " + name);
-       */
-       if (!stackOnly)         // spliced [dtd] needs startEntity
-           lexicalHandler.startEntity (name);
-       entityStack.push (systemId);
-    }
+  {
+    // The following warning was deleted because the application has the
+    // option of not setting systemId. Sun's JAXP or Xerces seems to
+    // ignore this case.
+    /*
+       if (systemId == null)
+       warn ("URI was not reported to parser for entity " + name);
+     */
+    if (!stackOnly)  // spliced [dtd] needs startEntity
+      {
+        lexicalHandler.startEntity(name);
+      }
+    entityStack.push(systemId);
+  }
 
-    void endExternalEntity (String name)
+  void endExternalEntity(String name)
     throws SAXException
-    {
-       if (!"[document]".equals (name))
-           lexicalHandler.endEntity (name);
-       entityStack.pop ();
-    }
+  {
+    if (!"[document]".equals(name))
+      {
+        lexicalHandler.endEntity(name);
+      }
+    entityStack.pop();
+  }
 
-    void startInternalEntity (String name)
+  void startInternalEntity(String name)
     throws SAXException
-    {
-       lexicalHandler.startEntity (name);
-    }
+  {
+    lexicalHandler.startEntity(name);
+  }
 
-    void endInternalEntity (String name)
+  void endInternalEntity(String name)
     throws SAXException
-    {
-       lexicalHandler.endEntity (name);
-    }
+  {
+    lexicalHandler.endEntity(name);
+  }
 
-    void doctypeDecl (String name, String publicId, String systemId)
+  void doctypeDecl(String name, String publicId, String systemId)
     throws SAXException
-    {
-       lexicalHandler.startDTD (name, publicId, systemId);
-       
-       // ... the "name" is a declaration and should be given
-       // to the DeclHandler (but sax2 doesn't).
-
-       // the IDs for the external subset are lexical details,
-       // as are the contents of the internal subset; but sax2
-       // doesn't provide the internal subset "pre-parse"
-    }
-
-    void notationDecl (String name, String ids [])
+  {
+    lexicalHandler.startDTD(name, publicId, systemId);
+  
+    // ... the "name" is a declaration and should be given
+    // to the DeclHandler (but sax2 doesn't).
+    
+    // the IDs for the external subset are lexical details,
+    // as are the contents of the internal subset; but sax2
+    // doesn't provide the internal subset "pre-parse"
+  }
+  
+  void notationDecl(String name, String publicId, String systemId,
+                    String baseUri)
     throws SAXException
-    {
-       try {
-           dtdHandler.notationDecl (name, ids [0],
-               (resolveAll && ids [1] != null)
-                       ? absolutize (ids [2], ids [1], true)
-                       : ids [1]);
-       } catch (IOException e) {
-           // "can't happen"
-           throw new SAXParseException (e.getMessage (), this, e);
-       }
-    }
+  {
+    try
+      {
+        dtdHandler.notationDecl(name, publicId,
+                                (resolveAll && systemId != null)
+                                ? absolutize(baseUri, systemId, true)
+                                : systemId);
+      }
+    catch (IOException e)
+      {
+        // "can't happen"
+        throw new SAXParseException(e.getMessage(), this, e);
+      }
+  }
 
-    void unparsedEntityDecl (String name, String ids [], String notation)
+  void unparsedEntityDecl(String name, String publicId, String systemId,
+                          String baseUri, String notation)
     throws SAXException
-    {
-       try {
-           dtdHandler.unparsedEntityDecl (name, ids [0],
-                   resolveAll
-                       ? absolutize (ids [2], ids [1], true)
-                       : ids [1],
-                   notation);
-       } catch (IOException e) {
-           // "can't happen"
-           throw new SAXParseException (e.getMessage (), this, e);
-       }
-    }
+  {
+    try
+      {
+        dtdHandler.unparsedEntityDecl(name, publicId,
+                                      resolveAll
+                                      ? absolutize(baseUri, systemId, true)
+                                      : systemId,
+                                      notation);
+      }
+    catch (IOException e)
+      {
+        // "can't happen"
+        throw new SAXParseException(e.getMessage(), this, e);
+      }
+  }
 
-    void endDoctype ()
+  void endDoctype()
     throws SAXException
-    {
-       lexicalHandler.endDTD ();
-    }
+  {
+    lexicalHandler.endDTD();
+  }
 
-    private void declarePrefix (String prefix, String uri)
+  private void declarePrefix(String prefix, String uri)
     throws SAXException
-    {
-       int index = uri.indexOf (':');
-
-       // many versions of nwalsh docbook stylesheets 
-       // have bogus URLs; so this can't be an error...
-       if (index < 1 && uri.length () != 0)
-           warn ("relative URI for namespace: " + uri);
-
-       // FIXME:  char [0] must be ascii alpha; chars [1..index]
-       // must be ascii alphanumeric or in "+-." [RFC 2396]
-       
-       //Namespace Constraints
-       //name for xml prefix must be http://www.w3.org/XML/1998/namespace
-       boolean prefixEquality = prefix.equals("xml");
-       boolean uriEquality = uri.equals("http://www.w3.org/XML/1998/namespace");
-       if ((prefixEquality || uriEquality) && !(prefixEquality && uriEquality))
-          fatal ("xml is by definition bound to the namespace name " +
-                       "http://www.w3.org/XML/1998/namespace");
-       
-        //xmlns prefix declaration is illegal but xml prefix declaration is llegal...
-       if (prefixEquality && uriEquality)
-          return;
-       
-        //name for xmlns prefix must be http://www.w3.org/2000/xmlns/
-       prefixEquality = prefix.equals("xmlns");
-       uriEquality = uri.equals("http://www.w3.org/2000/xmlns/");
-       if ((prefixEquality || uriEquality) && !(prefixEquality && uriEquality))
-          fatal("http://www.w3.org/2000/xmlns/ is by definition bound" +
-                       " to prefix xmlns");
-       
-       //even if the uri is http://www.w3.org/2000/xmlns/ it is illegal to declare it
-       if (prefixEquality && uriEquality)
-          fatal ("declaring the xmlns prefix is illegal");
-               
-       uri = uri.intern ();
-       prefixStack.declarePrefix (prefix, uri);
-       contentHandler.startPrefixMapping (prefix, uri);
-    }
+  {
+    int index = uri.indexOf(':');
+
+    // many versions of nwalsh docbook stylesheets 
+    // have bogus URLs; so this can't be an error...
+    if (index < 1 && uri.length() != 0)
+      {
+        warn("relative URI for namespace: " + uri);
+      }
 
-    void attribute (String qname, String value, boolean isSpecified)
-    throws SAXException
-    {
-       if (!attributes) {
-           attributes = true;
-           if (namespaces)
-               prefixStack.pushContext ();
-       }
-
-       // process namespace decls immediately;
-       // then maybe forget this as an attribute
-       if (namespaces) {
-           int index;
-
-      // default NS declaration?
-      if (getFeature (FEATURE + "string-interning")) {
-        if ("xmlns" == qname) {
-          declarePrefix ("", value);
-          if (!xmlNames)
-            return;
-        }
-        // NS prefix declaration?
-        else if ((index = qname.indexOf (':')) == 5
-                 && qname.startsWith ("xmlns")) {
-          String               prefix = qname.substring (6);
-          
-          if (prefix.equals(""))
-               fatal ("missing prefix in namespace declaration attribute");    
-          if (value.length () == 0) {
-            verror ("missing URI in namespace declaration attribute: "
-                    + qname);
-          } else
-            declarePrefix (prefix, value);
-          if (!xmlNames)
-            return;
-        }
-      } else {
-        if ("xmlns".equals(qname)) {
-          declarePrefix ("", value);
-          if (!xmlNames)
-            return;
-        }
-        // NS prefix declaration?
-        else if ((index = qname.indexOf (':')) == 5
-                 && qname.startsWith ("xmlns")) {
-          String               prefix = qname.substring (6);
-          
-          if (value.length () == 0) {
-            verror ("missing URI in namespace decl attribute: "
-                    + qname);
-          } else
-            declarePrefix (prefix, value);
-          if (!xmlNames)
-            return;
-        }
+    // FIXME:  char [0] must be ascii alpha; chars [1..index]
+    // must be ascii alphanumeric or in "+-." [RFC 2396]
+    
+    //Namespace Constraints
+    //name for xml prefix must be http://www.w3.org/XML/1998/namespace
+    boolean prefixEquality = prefix.equals("xml");
+    boolean uriEquality = uri.equals("http://www.w3.org/XML/1998/namespace");
+    if ((prefixEquality || uriEquality) && !(prefixEquality && uriEquality))
+      {
+        fatal("xml is by definition bound to the namespace name " +
+              "http://www.w3.org/XML/1998/namespace");
+      }
+  
+    //xmlns prefix declaration is illegal but xml prefix declaration is llegal...
+    if (prefixEquality && uriEquality)
+      {
+        return;
       }
+  
+    //name for xmlns prefix must be http://www.w3.org/2000/xmlns/
+    prefixEquality = prefix.equals("xmlns");
+    uriEquality = uri.equals("http://www.w3.org/2000/xmlns/");
+    if ((prefixEquality || uriEquality) && !(prefixEquality && uriEquality))
+      {
+        fatal("http://www.w3.org/2000/xmlns/ is by definition bound" +
+              " to prefix xmlns");
+      }
+  
+    //even if the uri is http://www.w3.org/2000/xmlns/
+    // it is illegal to declare it
+    if (prefixEquality && uriEquality)
+      {
+        fatal ("declaring the xmlns prefix is illegal");
+      }
+  
+    uri = uri.intern();
+    prefixStack.declarePrefix(prefix, uri);
+    contentHandler.startPrefixMapping(prefix, uri);
   }
-       // remember this attribute ...
-
-       attributeCount++;
-       
-       // attribute type comes from querying parser's DTD records
-       attributesList.add(new Attribute(qname, value, isSpecified));
-
-    }
 
-    void startElement (String elname)
+  void attribute(String qname, String value, boolean isSpecified)
     throws SAXException
-    {
-       ContentHandler handler = contentHandler;
-
-       //
-       // NOTE:  this implementation of namespace support adds something
-       // like six percent to parsing CPU time, in a large (~50 MB)
-       // document that doesn't use namespaces at all.  (Measured by PC
-       // sampling, with a bug where endElement processing was omitted.)
-       // [Measurement referred to older implementation, older JVM ...]
-       //
-       // It ought to become notably faster in such cases.  Most
-       // costs are the prefix stack calling Hashtable.get() (2%),
-       // String.hashCode() (1.5%) and about 1.3% each for pushing
-       // the context, and two chunks of name processing.
-       //
-
-       if (!attributes) {
-           if (namespaces)
-               prefixStack.pushContext ();
-       } else if (namespaces) {
-
-           // now we can patch up namespace refs; we saw all the
-           // declarations, so now we'll do the Right Thing
-           Iterator itt = attributesList.iterator ();
-           while(itt.hasNext())
-           {
-               Attribute attribute = (Attribute) itt.next();
-               String  qname = attribute.name;
-               int     index;
-
-    // default NS declaration?
-    if (getFeature (FEATURE + "string-interning")) {
-      if ("xmlns" == qname)
-                   continue;
-    } else {
-      if ("xmlns".equals(qname))
-                   continue;
-    }
-               //Illegal in the new Namespaces Draft
-               //should it be only in 1.1 docs??
-               if (qname.equals (":"))
-                   fatal ("namespace names consisting of a single colon " +
-                               "character are invalid");
-               index = qname.indexOf (':');
-
-               // NS prefix declaration?
-               if (index == 5 && qname.startsWith ("xmlns"))
-                   continue;
-
-               // it's not a NS decl; patch namespace info items
-               if (prefixStack.processName (qname, nsTemp, true) == null)
-                   fatal ("undeclared attribute prefix in: " + qname);
-               else {
-                   attribute.nameSpace = nsTemp[0];
-                   attribute.localName = nsTemp[1];
-               }
-           }
-       }
-
-       // save element name so attribute callbacks work
-       elementName = elname;
-       if (namespaces) {
-           if (prefixStack.processName (elname, nsTemp, false) == null) {
-               fatal ("undeclared element prefix in: " + elname);
-               nsTemp [0] = nsTemp [1] = "";
-           }
-           handler.startElement (nsTemp [0], nsTemp [1], elname, this);
-       } else
-           handler.startElement ("", "", elname, this);
-       // elementName = null;
-
-       // elements with no attributes are pretty common!
-       if (attributes) {
-           attributesList.clear();
-           attributeCount = 0;
-           attributes = false;
-       }
-    }
-
-    void endElement (String elname)
+  {
+    if (!attributes)
+      {
+        attributes = true;
+        if (namespaces)
+          {
+            prefixStack.pushContext();
+          }
+      }
+    
+    // process namespace decls immediately;
+    // then maybe forget this as an attribute
+    if (namespaces)
+      {
+        int index;
+        
+        // default NS declaration?
+        if (stringInterning)
+          {
+            if ("xmlns" == qname)
+              {
+                declarePrefix("", value);
+                if (!xmlNames)
+                  {
+                    return;
+                  }
+              }
+            // NS prefix declaration?
+            else if ((index = qname.indexOf(':')) == 5
+                     && qname.startsWith("xmlns"))
+              {
+                String prefix = qname.substring(6);
+              
+                if (prefix.equals(""))
+                  {
+                    fatal("missing prefix " +
+                          "in namespace declaration attribute");  
+                  }
+                if (value.length() == 0)
+                  {
+                    verror("missing URI in namespace declaration attribute: "
+                           + qname);
+                  }
+                else
+                  {
+                    declarePrefix(prefix, value);
+                  }
+                if (!xmlNames)
+                  {
+                    return;
+                  }
+              }
+          }
+        else
+          {
+            if ("xmlns".equals(qname))
+              {
+                declarePrefix("", value);
+                if (!xmlNames)
+                  {
+                    return;
+                  }
+              }
+            // NS prefix declaration?
+            else if ((index = qname.indexOf(':')) == 5
+                     && qname.startsWith("xmlns"))
+              {
+                String prefix = qname.substring(6);
+                
+                if (value.length() == 0)
+                  {
+                    verror("missing URI in namespace decl attribute: "
+                           + qname);
+                  }
+                else
+                  {
+                    declarePrefix(prefix, value);
+                  }
+                if (!xmlNames)
+                  {
+                    return;
+                  }
+              }
+          }
+      }
+    // remember this attribute ...
+    attributeCount++;
+    
+    // attribute type comes from querying parser's DTD records
+    attributesList.add(new Attribute(qname, value, isSpecified));
+    
+  }
+  
+  void startElement(String elname)
     throws SAXException
-    {
-       ContentHandler  handler = contentHandler;
-
-       if (!namespaces) {
-           handler.endElement ("", "", elname);
-           return;
-       }
-       prefixStack.processName (elname, nsTemp, false);
-       handler.endElement (nsTemp [0], nsTemp [1], elname);
+  {
+    ContentHandler handler = contentHandler;
 
-       Enumeration     prefixes = prefixStack.getDeclaredPrefixes ();
+    //
+    // NOTE:  this implementation of namespace support adds something
+    // like six percent to parsing CPU time, in a large (~50 MB)
+    // document that doesn't use namespaces at all.  (Measured by PC
+    // sampling, with a bug where endElement processing was omitted.)
+    // [Measurement referred to older implementation, older JVM ...]
+    //
+    // It ought to become notably faster in such cases.  Most
+    // costs are the prefix stack calling Hashtable.get() (2%),
+    // String.hashCode() (1.5%) and about 1.3% each for pushing
+    // the context, and two chunks of name processing.
+    //
+    
+    if (!attributes)
+      {
+        if (namespaces)
+          {
+            prefixStack.pushContext();
+          }
+      }
+    else if (namespaces)
+      {
+      
+        // now we can patch up namespace refs; we saw all the
+        // declarations, so now we'll do the Right Thing
+        Iterator itt = attributesList.iterator();
+        while (itt.hasNext())
+          {
+            Attribute attribute = (Attribute) itt.next();
+            String qname = attribute.name;
+            int index;
+            
+            // default NS declaration?
+            if (stringInterning)
+              {
+                if ("xmlns" == qname)
+                  {
+                    continue;
+                  }
+              }
+            else
+              {
+                if ("xmlns".equals(qname))
+                  {
+                    continue;
+                  }
+              }
+            //Illegal in the new Namespaces Draft
+            //should it be only in 1.1 docs??
+            if (qname.equals (":"))
+              {
+                fatal("namespace names consisting of a single colon " +
+                      "character are invalid");
+              }
+            index = qname.indexOf(':');
+            
+            // NS prefix declaration?
+            if (index == 5 && qname.startsWith("xmlns"))
+              {
+                continue;
+              }
+            
+            // it's not a NS decl; patch namespace info items
+            if (prefixStack.processName(qname, nsTemp, true) == null)
+              {
+                fatal("undeclared attribute prefix in: " + qname);
+              }
+            else
+              {
+                attribute.nameSpace = nsTemp[0];
+                attribute.localName = nsTemp[1];
+              }
+          }
+      }
+    
+    // save element name so attribute callbacks work
+    elementName = elname;
+    if (namespaces)
+      {
+        if (prefixStack.processName(elname, nsTemp, false) == null)
+          {
+            fatal("undeclared element prefix in: " + elname);
+            nsTemp[0] = nsTemp[1] = "";
+          }
+        handler.startElement(nsTemp[0], nsTemp[1], elname, this);
+      }
+    else
+      {
+        handler.startElement("", "", elname, this);
+      }
+    // elementName = null;
+    
+    // elements with no attributes are pretty common!
+    if (attributes)
+      {
+        attributesList.clear();
+        attributeCount = 0;
+        attributes = false;
+      }
+  }
+  
+  void endElement(String elname)
+    throws SAXException
+  {
+    ContentHandler handler = contentHandler;
 
-       while (prefixes.hasMoreElements ())
-           handler.endPrefixMapping ((String) prefixes.nextElement ());
-       prefixStack.popContext ();
-    }
+    if (!namespaces)
+      {
+        handler.endElement("", "", elname);
+        return;
+      }
+    prefixStack.processName(elname, nsTemp, false);
+    handler.endElement(nsTemp[0], nsTemp[1], elname);
+    
+    Enumeration prefixes = prefixStack.getDeclaredPrefixes();
+    
+    while (prefixes.hasMoreElements())
+      {
+        handler.endPrefixMapping((String) prefixes.nextElement());
+      }
+    prefixStack.popContext();
+  }
 
-    void startCDATA ()
+  void startCDATA()
     throws SAXException
-    {
-       lexicalHandler.startCDATA ();
-    }
+  {
+    lexicalHandler.startCDATA();
+  }
 
-    void charData (char ch[], int start, int length)
+  void charData(char[] ch, int start, int length)
     throws SAXException
-    {
-       contentHandler.characters (ch, start, length);
-    }
+  {
+    contentHandler.characters(ch, start, length);
+  }
 
-    void endCDATA ()
+  void endCDATA()
     throws SAXException
-    {
-       lexicalHandler.endCDATA ();
-    }
+  {
+    lexicalHandler.endCDATA();
+  }
 
-    void ignorableWhitespace (char ch[], int start, int length)
+  void ignorableWhitespace(char[] ch, int start, int length)
     throws SAXException
-    {
-       contentHandler.ignorableWhitespace (ch, start, length);
-    }
+  {
+    contentHandler.ignorableWhitespace(ch, start, length);
+  }
 
-    void processingInstruction (String target, String data)
+  void processingInstruction(String target, String data)
     throws SAXException
-    {
-       contentHandler.processingInstruction (target, data);
-    }
+  {
+    contentHandler.processingInstruction(target, data);
+  }
 
-    void comment (char ch[], int start, int length)
+  void comment(char[] ch, int start, int length)
     throws SAXException
-    {
-       if (lexicalHandler != base)
-           lexicalHandler.comment (ch, start, length);
-    }
+  {
+    if (lexicalHandler != base)
+      {
+        lexicalHandler.comment(ch, start, length);
+      }
+  }
 
-    void fatal (String message)
+  void fatal(String message)
     throws SAXException
-    {
-       SAXParseException fatal;
-       
-       fatal = new SAXParseException (message, this);
-       errorHandler.fatalError (fatal);
-
-       // Even if the application can continue ... we can't!
-       throw fatal;
-    }
+  {
+    SAXParseException fatal;
+  
+    fatal = new SAXParseException(message, this);
+    errorHandler.fatalError(fatal);
+
+    // Even if the application can continue ... we can't!
+    throw fatal;
+  }
 
-    // We can safely report a few validity errors that
-    // make layered SAX2 DTD validation more conformant
-    void verror (String message)
+  // We can safely report a few validity errors that
+  // make layered SAX2 DTD validation more conformant
+  void verror(String message)
     throws SAXException
-    {
-       SAXParseException err;
-       
-       err = new SAXParseException (message, this);
-       errorHandler.error (err);
-    }
-
-    void warn (String message)
+  {
+    SAXParseException err;
+    
+    err = new SAXParseException(message, this);
+    errorHandler.error(err);
+  }
+  
+  void warn(String message)
     throws SAXException
-    {
-       SAXParseException err;
-       
-       err = new SAXParseException (message, this);
-       errorHandler.warning (err);
-    }
+  {
+    SAXParseException err;
+  
+    err = new SAXParseException(message, this);
+    errorHandler.warning(err);
+  }
 
+  //
+  // Implementation of org.xml.sax.Attributes.
+  //
+
+  /**
+   * <b>SAX1 AttributeList, SAX2 Attributes</b> method
+   * (don't invoke on parser);
+   */
+  public int getLength()
+  {
+    return attributesList.size();
+  }
 
-    //
-    // Implementation of org.xml.sax.Attributes.
-    //
+  /**
+   * <b>SAX2 Attributes</b> method (don't invoke on parser);
+   */
+  public String getURI(int index)
+  {
+    if (index < 0 || index >= attributesList.size())
+      {
+        return null;
+      }
+    return ((Attribute) attributesList.get(index)).nameSpace;
+  }
 
-    /**
-     * <b>SAX1 AttributeList, SAX2 Attributes</b> method
-     * (don't invoke on parser);
-     */
-    public int getLength ()
-    {
-       return attributesList.size();
-    }
+  /**
+   * <b>SAX2 Attributes</b> method (don't invoke on parser);
+   */
+  public String getLocalName(int index)
+  {
+    if (index < 0 || index >= attributesList.size())
+      {
+        return null;
+      }
+    Attribute attr = (Attribute) attributesList.get(index);
+    // FIXME attr.localName is sometimes null, why?
+    if (namespaces && attr.localName == null)
+      {
+        // XXX fix this here for now
+        int ci = attr.name.indexOf(':');
+        attr.localName = (ci == -1) ? attr.name :
+          attr.name.substring(ci + 1);
+      }
+    return (attr.localName == null) ? "" : attr.localName;
+  }
 
-    /**
-     * <b>SAX2 Attributes</b> method (don't invoke on parser);
-     */
-    public String getURI (int index)
-    {
-        if (index < 0 || index >= attributesList.size())
-          {
-            return null;
-          }
-       return ((Attribute) attributesList.get(index)).nameSpace;
-    }
+  /**
+   * <b>SAX2 Attributes</b> method (don't invoke on parser);
+   */
+  public String getQName(int index)
+  {
+    if (index < 0 || index >= attributesList.size())
+      {
+      return null;
+      }
+    Attribute attr = (Attribute) attributesList.get(index);
+    return (attr.name == null) ? "" : attr.name;
+  }
 
-    /**
-     * <b>SAX2 Attributes</b> method (don't invoke on parser);
-     */
-    public String getLocalName (int index)
-    {
-        if (index < 0 || index >= attributesList.size())
-          {
-            return null;
-          }
-        Attribute attr = (Attribute) attributesList.get(index);
-        // FIXME attr.localName is sometimes null, why?
-        if (namespaces && attr.localName == null)
-          {
-            // XXX fix this here for now
-            int ci = attr.name.indexOf(':');
-            attr.localName = (ci == -1) ? attr.name :
-              attr.name.substring(ci + 1);
-          }
-        return (attr.localName == null) ? "" : attr.localName;
-    }
+  /**
+   * <b>SAX1 AttributeList</b> method (don't invoke on parser);
+   */
+  public String getName(int index)
+  {
+    return getQName(index);
+  }
 
-    /**
-     * <b>SAX2 Attributes</b> method (don't invoke on parser);
-     */
-    public String getQName (int index)
-    {
-        if (index < 0 || index >= attributesList.size())
-          {
-            return null;
-          }
-        Attribute attr = (Attribute) attributesList.get(index);
-       return (attr.name == null) ? "" : attr.name;
-    }
+  /**
+   * <b>SAX1 AttributeList, SAX2 Attributes</b> method
+   * (don't invoke on parser);
+   */
+  public String getType(int index)
+  {
+    if (index < 0 || index >= attributesList.size())
+      {
+        return null;
+      }
+    String type = parser.getAttributeType(elementName, getQName(index));
+    if (type == null)
+      {
+        return "CDATA";
+      }
+    // ... use DeclHandler.attributeDecl to see enumerations
+    if (type == "ENUMERATION")
+      {
+        return "NMTOKEN";
+      }
+    return type;
+  }
 
-    /**
-     * <b>SAX1 AttributeList</b> method (don't invoke on parser);
-     */
-    public String getName (int index)
-    {
-       return getQName(index);
-    }
+  /**
+   * <b>SAX1 AttributeList, SAX2 Attributes</b> method
+   * (don't invoke on parser);
+   */
+  public String getValue(int index)
+  {
+    if (index < 0 || index >= attributesList.size())
+      {
+        return null;
+      }
+    return ((Attribute) attributesList.get(index)).value;
+  }
 
-    /**
-     * <b>SAX1 AttributeList, SAX2 Attributes</b> method
-     * (don't invoke on parser);
-     */
-    public String getType (int index)
+  /**
+   * <b>SAX2 Attributes</b> method (don't invoke on parser);
+   */
+  public int getIndex(String uri, String local)
     {
-        if (index < 0 || index >= attributesList.size())
-          {
-            return null;
-          }
-       String  type = parser.getAttributeType(elementName, getQName(index));
-       if (type == null)
-          {
-           return "CDATA";
-          }
-       // ... use DeclHandler.attributeDecl to see enumerations
-        if (type == "ENUMERATION")
-          {
-            return "NMTOKEN";
-          }
-        return type;
-    }
-
+      int length = getLength();
+      
+      for (int i = 0; i < length; i++)
+        {
+          if (!getURI(i).equals(uri))
+            {
+              continue;
+            }
+          if (getLocalName(i).equals(local))
+            {
+              return i;
+            }
+        }
+      return -1;
+  }
 
-    /**
-     * <b>SAX1 AttributeList, SAX2 Attributes</b> method
-     * (don't invoke on parser);
-     */
-    public String getValue (int index)
-    {
-        if (index < 0 || index >= attributesList.size())
+  /**
+   * <b>SAX2 Attributes</b> method (don't invoke on parser);
+   */
+  public int getIndex(String xmlName)
+  {
+    int length = getLength();
+    
+    for (int i = 0; i < length; i++)
+      {
+        if (getQName(i).equals(xmlName))
           {
-            return null;
+            return i;
           }
-       return ((Attribute) attributesList.get(index)).value;
-    }
+      }
+    return -1;
+  }
 
+  /**
+   * <b>SAX2 Attributes</b> method (don't invoke on parser);
+   */
+  public String getType(String uri, String local)
+  {
+    int index = getIndex(uri, local);
+    
+    if (index < 0)
+      {
+        return null;
+      }
+    return getType(index);
+  }
 
-    /**
-     * <b>SAX2 Attributes</b> method (don't invoke on parser);
-     */
-    public int getIndex (String uri, String local)
-    {
-       int length = getLength();
+  /**
+   * <b>SAX1 AttributeList, SAX2 Attributes</b> method
+   * (don't invoke on parser);
+   */
+  public String getType(String xmlName)
+  {
+    int index = getIndex(xmlName);
+    
+    if (index < 0)
+      {
+        return null;
+      }
+    return getType(index);
+  }
 
-       for (int i = 0; i < length; i++)
-          {
-            if (!getURI(i).equals(uri))
-              {
-               continue;
-              }
-           if (getLocalName(i).equals(local))
-              {
-               return i;
-              }
-          }
-       return -1;
-    }
+  /**
+   * <b>SAX Attributes</b> method (don't invoke on parser);
+   */
+  public String getValue(String uri, String local)
+  {
+    int index = getIndex(uri, local);
+    
+    if (index < 0)
+      {
+        return null;
+      }
+    return getValue(index);
+  }
 
+  /**
+   * <b>SAX1 AttributeList, SAX2 Attributes</b> method
+   * (don't invoke on parser);
+   */
+  public String getValue(String xmlName)
+  {
+    int index = getIndex(xmlName);
+    
+    if (index < 0)
+      {
+        return null;
+      }
+    return getValue(index);
+  }
 
-    /**
-     * <b>SAX2 Attributes</b> method (don't invoke on parser);
-     */
-    public int getIndex (String xmlName)
-    {
-       int length = getLength();
+  //
+  // Implementation of org.xml.sax.ext.Attributes2
+  //
+
+  /** @return false unless the attribute was declared in the DTD.
+   * @throws java.lang.ArrayIndexOutOfBoundsException
+   *   When the supplied index does not identify an attribute.
+   */  
+  public boolean isDeclared(int index)
+  {
+    if (index < 0 || index >= attributeCount)
+      {
+        throw new ArrayIndexOutOfBoundsException();
+      }
+    String type = parser.getAttributeType(elementName, getQName(index));
+    return (type != null);
+  }
 
-       for (int i = 0; i < length; i++)
-          {
-            if (getQName(i).equals(xmlName))
-              {
-               return i;
-              }
-          }
-       return -1;
-    }
+  /** @return false unless the attribute was declared in the DTD.
+   * @throws java.lang.IllegalArgumentException
+   *   When the supplied names do not identify an attribute.
+   */
+  public boolean isDeclared(String qName)
+  {
+    int index = getIndex(qName);
+    if (index < 0)
+      {
+        throw new IllegalArgumentException();
+      }
+    String type = parser.getAttributeType(elementName, qName);
+    return (type != null);
+  }
 
+  /** @return false unless the attribute was declared in the DTD.
+   * @throws java.lang.IllegalArgumentException
+   *   When the supplied names do not identify an attribute.
+   */
+  public boolean isDeclared(String uri, String localName)
+  {
+    int index = getIndex(uri, localName);
+    return isDeclared(index);
+  }
 
-    /**
-     * <b>SAX2 Attributes</b> method (don't invoke on parser);
-     */
-    public String getType (String uri, String local)
-    {
-       int index = getIndex(uri, local);
+  /**
+   * <b>SAX-ext Attributes2</b> method (don't invoke on parser);
+   */
+  public boolean isSpecified(int index)
+  {
+    return ((Attribute) attributesList.get(index)).specified;
+  }
 
-       if (index < 0)
-          {
-           return null;
-          }
-       return getType(index);
-    }
+  /**
+   * <b>SAX-ext Attributes2</b> method (don't invoke on parser);
+   */
+  public boolean isSpecified(String uri, String local)
+  {
+    int index = getIndex (uri, local);
+    return isSpecified(index);
+  }
 
+  /**
+   * <b>SAX-ext Attributes2</b> method (don't invoke on parser);
+   */
+  public boolean isSpecified(String xmlName)
+  {
+    int index = getIndex (xmlName);
+    return isSpecified(index);
+  }
 
-    /**
-     * <b>SAX1 AttributeList, SAX2 Attributes</b> method
-     * (don't invoke on parser);
-     */
-    public String getType (String xmlName)
-    {
-       int index = getIndex(xmlName);
+  //
+  // Implementation of org.xml.sax.Locator.
+  //
 
-       if (index < 0)
-          {
-           return null;
-          }
-       return getType(index);
-    }
+  /**
+   * <b>SAX Locator</b> method (don't invoke on parser);
+   */
+  public String getPublicId()
+  {
+    return null;   // FIXME track public IDs too
+  }
 
+  /**
+   * <b>SAX Locator</b> method (don't invoke on parser);
+   */
+  public String getSystemId()
+  {
+    if (entityStack.empty())
+      {
+        return null;
+      }
+    else
+      {
+        return (String) entityStack.peek();
+      }
+  }
 
-    /**
-     * <b>SAX Attributes</b> method (don't invoke on parser);
-     */
-    public String getValue (String uri, String local)
-    {
-       int index = getIndex(uri, local);
+  /**
+   * <b>SAX Locator</b> method (don't invoke on parser);
+   */
+  public int getLineNumber()
+  {
+    return parser.getLineNumber();
+  }
 
-       if (index < 0)
-          {
-           return null;
-          }
-       return getValue(index);
-    }
+  /**
+   * <b>SAX Locator</b> method (don't invoke on parser);
+   */
+  public int getColumnNumber()
+  {
+    return parser.getColumnNumber();
+  }
 
+  // adapter between SAX2 content handler and SAX1 document handler callbacks
+  private static class Adapter
+    implements ContentHandler
+  {
+    
+    private DocumentHandler docHandler;
 
-    /**
-     * <b>SAX1 AttributeList, SAX2 Attributes</b> method
-     * (don't invoke on parser);
-     */
-    public String getValue (String xmlName)
+    Adapter(DocumentHandler dh)
     {
-       int index = getIndex(xmlName);
-
-       if (index < 0)
-          {
-           return null;
-          }
-       return getValue(index);
+      docHandler = dh;
     }
 
-
-    //
-    // Implementation of org.xml.sax.ext.Attributes2
-    //
-
-
-    /** @return false unless the attribute was declared in the DTD.
-     * @throws java.lang.ArrayIndexOutOfBoundsException
-     *   When the supplied index does not identify an attribute.
-     */    
-    public boolean isDeclared (int index)
+    public void setDocumentLocator(Locator l)
     {
-       if (index < 0 || index >= attributeCount) 
-           throw new ArrayIndexOutOfBoundsException ();
-        String type = parser.getAttributeType(elementName, getQName(index));
-        return (type != null);
+      docHandler.setDocumentLocator(l);
     }
-
-    /** @return false unless the attribute was declared in the DTD.
-     * @throws java.lang.IllegalArgumentException
-     *   When the supplied names do not identify an attribute.
-     */
-    public boolean isDeclared (String qName)
+  
+    public void startDocument()
+      throws SAXException
     {
-       int index = getIndex (qName);
-       if (index < 0)
-           throw new IllegalArgumentException ();
-        String type = parser.getAttributeType(elementName, qName);
-        return (type != null);
+      docHandler.startDocument();
     }
-
-    /** @return false unless the attribute was declared in the DTD.
-     * @throws java.lang.IllegalArgumentException
-     *   When the supplied names do not identify an attribute.
-     */
-    public boolean isDeclared (String uri, String localName)
+  
+    public void processingInstruction(String target, String data)
+      throws SAXException
     {
-       int index = getIndex (uri, localName);
-        return isDeclared(index);
+      docHandler.processingInstruction(target, data);
     }
-
-
-    /**
-     * <b>SAX-ext Attributes2</b> method (don't invoke on parser);
-     */
-    public boolean isSpecified (int index)
+  
+    public void startPrefixMapping(String prefix, String uri)
     {
-       return ((Attribute) attributesList.get(index)).specified;
+      /* ignored */
     }
 
-    /**
-     * <b>SAX-ext Attributes2</b> method (don't invoke on parser);
-     */
-    public boolean isSpecified (String uri, String local)
+    public void startElement(String namespace,
+                             String local,
+                             String name,
+                             Attributes attrs)
+      throws SAXException
     {
-       int index = getIndex (uri, local);
-        return isSpecified(index);
+      docHandler.startElement(name, (AttributeList) attrs);
     }
 
-    /**
-     * <b>SAX-ext Attributes2</b> method (don't invoke on parser);
-     */
-    public boolean isSpecified (String xmlName)
+    public void characters(char[] buf, int offset, int len)
+      throws SAXException
     {
-       int index = getIndex (xmlName);
-        return isSpecified(index);
+      docHandler.characters(buf, offset, len);
     }
 
-
-    //
-    // Implementation of org.xml.sax.Locator.
-    //
-
-    /**
-     * <b>SAX Locator</b> method (don't invoke on parser);
-     */
-    public String getPublicId ()
+    public void ignorableWhitespace(char[] buf, int offset, int len)
+      throws SAXException
     {
-       return null;            // FIXME track public IDs too
+      docHandler.ignorableWhitespace(buf, offset, len);
     }
 
-    /**
-     * <b>SAX Locator</b> method (don't invoke on parser);
-     */
-    public String getSystemId ()
+    public void skippedEntity(String name)
     {
-       if (entityStack.empty ())
-           return null;
-       else
-           return (String) entityStack.peek ();
+      /* ignored */
     }
 
-    /**
-     * <b>SAX Locator</b> method (don't invoke on parser);
-     */
-    public int getLineNumber ()
+    public void endElement(String u, String l, String name)
+      throws SAXException
     {
-       return parser.getLineNumber ();
+      docHandler.endElement(name);
     }
 
-    /**
-     * <b>SAX Locator</b> method (don't invoke on parser);
-     */
-    public int getColumnNumber ()
+    public void endPrefixMapping(String prefix)
     {
-       return parser.getColumnNumber ();
+      /* ignored */
     }
 
-    // adapter between SAX2 content handler and SAX1 document handler callbacks
-    private static class Adapter implements ContentHandler
+    public void endDocument()
+      throws SAXException
     {
-       private DocumentHandler         docHandler;
-
-       Adapter (DocumentHandler dh)
-           { docHandler = dh; }
-
-
-       public void setDocumentLocator (Locator l)
-           { docHandler.setDocumentLocator (l); }
-       
-       public void startDocument () throws SAXException
-           { docHandler.startDocument (); }
-       
-       public void processingInstruction (String target, String data)
-       throws SAXException
-           { docHandler.processingInstruction (target, data); }
-       
-       public void startPrefixMapping (String prefix, String uri)
-           { /* ignored */ }
-
-       public void startElement (
-           String      namespace,
-           String      local,
-           String      name,
-           Attributes  attrs
-       ) throws SAXException
-           { docHandler.startElement (name, (AttributeList) attrs); }
-
-       public void characters (char buf [], int offset, int len)
-       throws SAXException
-           { docHandler.characters (buf, offset, len); }
-
-       public void ignorableWhitespace (char buf [], int offset, int len)
-       throws SAXException
-           { docHandler.ignorableWhitespace (buf, offset, len); }
-
-       public void skippedEntity (String name)
-           { /* ignored */ }
-
-       public void endElement (String u, String l, String name)
-       throws SAXException
-           { docHandler.endElement (name); }
-
-       public void endPrefixMapping (String prefix)
-           { /* ignored */ }
-
-       public void endDocument () throws SAXException
-           { docHandler.endDocument (); }
+      docHandler.endDocument();
     }
-}
-
-class Attribute
-{
+  }
 
+  private static class Attribute
+  {
+    
     String name;
     String value;
     String nameSpace;
     String localName;
     boolean specified;
-
+    
     Attribute(String name, String value, boolean specified)
     {
-        this.name = name;
-        this.value = value;
-        this.nameSpace = "";
-        this.specified = specified;
+      this.name = name;
+      this.value = value;
+      this.nameSpace = "";
+      this.specified = specified;
     }
-}
+    
+  }
 
+}
index f4abf22..e6f55e3 100644 (file)
@@ -53,6 +53,8 @@ Partly derived from code which carried the following notice:
 
 package gnu.xml.aelfred2;
 
+import gnu.java.security.action.GetPropertyAction;
+
 import java.io.BufferedInputStream;
 import java.io.CharConversionException;
 import java.io.EOFException;
@@ -63,12 +65,11 @@ import java.io.Reader;
 import java.io.UnsupportedEncodingException;
 import java.net.URL;
 import java.net.URLConnection;
+import java.security.AccessController;
 
-// maintaining 1.1 compatibility for now ...
-// Iterator and Hashmap ought to be faster
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Stack;
+import java.util.Iterator;
+import java.util.HashMap;
+import java.util.LinkedList;
 
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -86,1511 +87,1838 @@ import org.xml.sax.SAXException;
  */
 final class XmlParser
 {
-    // avoid slow per-character readCh()
-    private final static boolean USE_CHEATS = true;
 
+  // avoid slow per-character readCh()
+  private final static boolean USE_CHEATS = true;
 
-    //////////////////////////////////////////////////////////////////////
-    // Constructors.
-    ////////////////////////////////////////////////////////////////////////
+  ////////////////////////////////////////////////////////////////////////
+  // Constants.
+  ////////////////////////////////////////////////////////////////////////
+  
+  //
+  // Constants for element content type.
+  //
+  
+  /**
+   * Constant: an element has not been declared.
+   * @see #getElementContentType
+   */
+  public final static int CONTENT_UNDECLARED = 0;
+  
+  /**
+   * Constant: the element has a content model of ANY.
+   * @see #getElementContentType
+   */
+  public final static int CONTENT_ANY = 1;
+  
+  /**
+   * Constant: the element has declared content of EMPTY.
+   * @see #getElementContentType
+   */
+  public final static int CONTENT_EMPTY = 2;
+  
+  /**
+   * Constant: the element has mixed content.
+   * @see #getElementContentType
+   */
+  public final static int CONTENT_MIXED = 3;
+  
+  /**
+   * Constant: the element has element content.
+   * @see #getElementContentType
+   */
+  public final static int CONTENT_ELEMENTS = 4;
+  
+  
+  //
+  // Constants for the entity type.
+  //
+  
+  /**
+   * Constant: the entity has not been declared.
+   * @see #getEntityType
+   */
+  public final static int ENTITY_UNDECLARED = 0;
+  
+  /**
+   * Constant: the entity is internal.
+   * @see #getEntityType
+   */
+  public final static int ENTITY_INTERNAL = 1;
+  
+  /**
+   * Constant: the entity is external, non-parsable data.
+   * @see #getEntityType
+   */
+  public final static int ENTITY_NDATA = 2;
+  
+  /**
+   * Constant: the entity is external XML data.
+   * @see #getEntityType
+   */
+  public final static int ENTITY_TEXT = 3;
+    
+  //
+  // Attribute type constants are interned literal strings.
+  //
+  
+  //
+  // Constants for supported encodings.  "external" is just a flag.
+  //
+  private final static int ENCODING_EXTERNAL = 0;
+  private final static int ENCODING_UTF_8 = 1;
+  private final static int ENCODING_ISO_8859_1 = 2;
+  private final static int ENCODING_UCS_2_12 = 3;
+  private final static int ENCODING_UCS_2_21 = 4;
+  private final static int ENCODING_UCS_4_1234 = 5;
+  private final static int ENCODING_UCS_4_4321 = 6;
+  private final static int ENCODING_UCS_4_2143 = 7;
+  private final static int ENCODING_UCS_4_3412 = 8;
+  private final static int ENCODING_ASCII = 9;
+  
+  //
+  // Constants for attribute default value.
+  //
+  
+  /**
+   * Constant: the attribute is not declared.
+   * @see #getAttributeDefaultValueType
+   */
+  public final static int ATTRIBUTE_DEFAULT_UNDECLARED = 30;
+  
+  /**
+   * Constant: the attribute has a literal default value specified.
+   * @see #getAttributeDefaultValueType
+   * @see #getAttributeDefaultValue
+   */
+  public final static int ATTRIBUTE_DEFAULT_SPECIFIED = 31;
+  
+  /**
+   * Constant: the attribute was declared #IMPLIED.
+   * @see #getAttributeDefaultValueType
+   */
+  public final static int ATTRIBUTE_DEFAULT_IMPLIED = 32;
+  
+  /**
+   * Constant: the attribute was declared #REQUIRED.
+   * @see #getAttributeDefaultValueType
+   */
+  public final static int ATTRIBUTE_DEFAULT_REQUIRED = 33;
+  
+  /**
+   * Constant: the attribute was declared #FIXED.
+   * @see #getAttributeDefaultValueType
+   * @see #getAttributeDefaultValue
+   */
+  public final static int ATTRIBUTE_DEFAULT_FIXED = 34;
+    
+  //
+  // Constants for input.
+  //
+  private final static int INPUT_NONE = 0;
+  private final static int INPUT_INTERNAL = 1;
+  private final static int INPUT_STREAM = 3;
+  private final static int INPUT_READER = 5;
+  
+  //
+  // Flags for reading literals.
+  //
+  // expand general entity refs (attribute values in dtd and content)
+  private final static int LIT_ENTITY_REF = 2;
+  // normalize this value (space chars) (attributes, public ids)
+  private final static int LIT_NORMALIZE = 4;
+  // literal is an attribute value 
+  private final static int LIT_ATTRIBUTE = 8;
+  // don't expand parameter entities
+  private final static int LIT_DISABLE_PE = 16;
+  // don't expand [or parse] character refs
+  private final static int LIT_DISABLE_CREF = 32;
+  // don't parse general entity refs
+  private final static int LIT_DISABLE_EREF = 64;
+  // literal is a public ID value 
+  private final static int LIT_PUBID = 256;
+    
+  //
+  // Flags affecting PE handling in DTDs (if expandPE is true).
+  // PEs expand with space padding, except inside literals.
+  //
+  private final static int CONTEXT_NORMAL = 0;
+  private final static int CONTEXT_LITERAL = 1;
+  
+  // Emit warnings for relative URIs with no base URI.
+  static boolean uriWarnings;
+  static
+  {
+    String key = "gnu.xml.aelfred2.XmlParser.uriWarnings";
+    GetPropertyAction a = new GetPropertyAction(key);
+    uriWarnings = "true".equals(AccessController.doPrivileged(a));      
+  }
+    
+  //
+  // The current XML handler interface.
+  //
+  private SAXDriver handler;
+  
+  //
+  // I/O information.
+  //
+  private Reader reader;   // current reader
+  private InputStream is;     // current input stream
+  private int line;     // current line number
+  private int column;   // current column number
+  private int sourceType;   // type of input source
+  private LinkedList inputStack;   // stack of input soruces
+  private URLConnection externalEntity; // current external entity
+  private int encoding;   // current character encoding
+  private int currentByteCount; // bytes read from current source
+  private InputSource scratch;  // temporary
+  
+  //
+  // Buffers for decoded but unparsed character input.
+  //
+  private char[] readBuffer;
+  private int readBufferPos;
+  private int readBufferLength;
+  private int readBufferOverflow;  // overflow from last data chunk.
+  
+  //
+  // Buffer for undecoded raw byte input.
+  //
+  private final static int READ_BUFFER_MAX = 16384;
+  private byte[] rawReadBuffer;
+  
+  
+  //
+  // Buffer for attribute values, char refs, DTD stuff.
+  //
+  private static int DATA_BUFFER_INITIAL = 4096;
+  private char[] dataBuffer;
+  private int dataBufferPos;
+  
+  //
+  // Buffer for parsed names.
+  //
+  private static int NAME_BUFFER_INITIAL = 1024;
+  private char[] nameBuffer;
+  private int nameBufferPos;
+  
+  //
+  // Save any standalone flag
+  //
+  private boolean docIsStandalone;
+  
+  //
+  // Hashtables for DTD information on elements, entities, and notations.
+  // Populated until we start ignoring decls (because of skipping a PE)
+  //
+  private HashMap elementInfo;
+  private HashMap entityInfo;
+  private HashMap notationInfo;
+  private boolean skippedPE;
+  
+  //
+  // Element type currently in force.
+  //
+  private String currentElement;
+  private int currentElementContent;
+  
+  //
+  // Stack of entity names, to detect recursion.
+  //
+  private LinkedList entityStack;
+  
+  //
+  // PE expansion is enabled in most chunks of the DTD, not all.
+  // When it's enabled, literals are treated differently.
+  //
+  private boolean inLiteral;
+  private boolean expandPE;
+  private boolean peIsError;
+  
+  //
+  // can't report entity expansion inside two constructs:
+  // - attribute expansions (internal entities only)
+  // - markup declarations (parameter entities only)
+  //
+  private boolean doReport;
+  
+  //
+  // Symbol table, for caching interned names.
+  //
+  // These show up wherever XML names or nmtokens are used:  naming elements,
+  // attributes, PIs, notations, entities, and enumerated attribute values.
+  //
+  // NOTE:  This hashtable doesn't grow.  The default size is intended to be
+  // rather large for most documents.  Example:  one snapshot of the DocBook
+  // XML 4.1 DTD used only about 350 such names.  As a rule, only pathological
+  // documents (ones that don't reuse names) should ever see much collision.
+  //
+  // Be sure that SYMBOL_TABLE_LENGTH always stays prime, for best hashing.
+  // "2039" keeps the hash table size at about two memory pages on typical
+  // 32 bit hardware.
+  //
+  private final static int SYMBOL_TABLE_LENGTH = 2039;
+  
+  private Object[][] symbolTable;
+  
+  //
+  // Hash table of attributes found in current start tag.
+  //
+  private String[] tagAttributes;
+  private int tagAttributePos;
+  
+  //
+  // Utility flag: have we noticed a CR while reading the last
+  // data chunk?  If so, we will have to go back and normalise
+  // CR or CR/LF line ends.
+  //
+  private boolean sawCR;
+  
+  //
+  // Utility flag: are we in CDATA?  If so, whitespace isn't ignorable.
+  // 
+  private boolean inCDATA;
+  
+  //
+  // Xml version.
+  //  
+  private static final int XML_10 = 0; 
+  private static final int XML_11 = 1; 
+  private int xmlVersion = XML_10;
+
+  //////////////////////////////////////////////////////////////////////
+  // Constructors.
+  ////////////////////////////////////////////////////////////////////////
+  
+  /**
+   * Construct a new parser with no associated handler.
+   * @see #setHandler
+   * @see #parse
+   */
+  // package private
+  XmlParser()
+  {
+  }
 
+  /**
+   * Set the handler that will receive parsing events.
+   * @param handler The handler to receive callback events.
+   * @see #parse
+   */
+  // package private
+  void setHandler(SAXDriver handler)
+  {
+    this.handler = handler;
+  }
 
-    /**
-     * Construct a new parser with no associated handler.
-     * @see #setHandler
-     * @see #parse
-     */
-    // package private
-    XmlParser ()
-    {
-    }
+  /**
+   * Parse an XML document from the character stream, byte stream, or URI
+   * that you provide (in that order of preference).  Any URI that you
+   * supply will become the base URI for resolving relative URI, and may
+   * be used to acquire a reader or byte stream.
+   *
+   * <p> Only one thread at a time may use this parser; since it is
+   * private to this package, post-parse cleanup is done by the caller,
+   * which MUST NOT REUSE the parser (just null it).
+   *
+   * @param systemId Absolute URI of the document; should never be null,
+   *   but may be so iff a reader <em>or</em> a stream is provided.
+   * @param publicId The public identifier of the document, or null.
+   * @param reader A character stream; must be null if stream isn't.
+   * @param stream A byte input stream; must be null if reader isn't.
+   * @param encoding The suggested encoding, or null if unknown.
+   * @exception java.lang.Exception Basically SAXException or IOException
+   */
+  // package private 
+  void doParse(String systemId, String publicId, Reader reader,
+               InputStream stream, String encoding)
+    throws Exception
+  {
+    if (handler == null)
+      {
+        throw new IllegalStateException("no callback handler");
+      }
 
+    initializeVariables();
+
+    // predeclare the built-in entities here (replacement texts)
+    // we don't need to intern(), since we're guaranteed literals
+    // are always (globally) interned.
+    setInternalEntity("amp", "&#38;");
+    setInternalEntity("lt", "&#60;");
+    setInternalEntity("gt", "&#62;");
+    setInternalEntity("apos", "&#39;");
+    setInternalEntity("quot", "&#34;");
+
+    try
+      {
+        // pushURL first to ensure locator is correct in startDocument
+        // ... it might report an IO or encoding exception.
+        handler.startDocument();
+        pushURL(false, "[document]",
+                // default baseURI: null
+                new ExternalIdentifiers(publicId, systemId, null),
+                reader, stream, encoding, false);
+        
+        parseDocument();
+      }
+    catch (EOFException e)
+      {
+        //empty input
+        error("empty document, with no root element.");
+      }
+    finally
+      {
+        if (reader != null)
+          {
+            try
+              {
+                reader.close();
+              }
+            catch (IOException e)
+              {
+                /* ignore */
+              }
+          }
+        if (stream != null)
+          {
+            try
+              {
+                stream.close();
+              }
+            catch (IOException e)
+              {
+                /* ignore */
+              }
+          }
+        if (is != null)
+          {
+            try
+              {
+                is.close();
+              }
+            catch (IOException e)
+              {
+                /* ignore */
+              }
+          }
+        scratch = null;
+      }
+  }
 
-    /**
-     * Set the handler that will receive parsing events.
-     * @param handler The handler to receive callback events.
-     * @see #parse
-     */
-    // package private
-    void setHandler (SAXDriver handler)
-    {
-       this.handler = handler;
-    }
+  //////////////////////////////////////////////////////////////////////
+  // Error reporting.
+  //////////////////////////////////////////////////////////////////////
+    
+  /**
+   * Report an error.
+   * @param message The error message.
+   * @param textFound The text that caused the error (or null).
+   * @see SAXDriver#error
+   * @see #line
+   */
+  private void error(String message, String textFound, String textExpected)
+    throws SAXException
+  {
+    if (textFound != null)
+      {
+        message = message + " (found \"" + textFound + "\")";
+      }
+    if (textExpected != null)
+      {
+        message = message + " (expected \"" + textExpected + "\")";
+      }
+    handler.fatal(message);
+    
+    // "can't happen"
+    throw new SAXException(message);
+  }
 
+  /**
+   * Report a serious error.
+   * @param message The error message.
+   * @param textFound The text that caused the error (or null).
+   */
+  private void error(String message, char textFound, String textExpected)
+    throws SAXException
+  {
+    error(message, new Character(textFound).toString(), textExpected);
+  }
 
-    /**
-     * Parse an XML document from the character stream, byte stream, or URI
-     * that you provide (in that order of preference).  Any URI that you
-     * supply will become the base URI for resolving relative URI, and may
-     * be used to acquire a reader or byte stream.
-     *
-     * <p> Only one thread at a time may use this parser; since it is
-     * private to this package, post-parse cleanup is done by the caller,
-     * which MUST NOT REUSE the parser (just null it).
-     *
-     * @param systemId Absolute URI of the document; should never be null,
-     * but may be so iff a reader <em>or</em> a stream is provided.
-     * @param publicId The public identifier of the document, or null.
-     * @param reader A character stream; must be null if stream isn't.
-     * @param stream A byte input stream; must be null if reader isn't.
-     * @param encoding The suggested encoding, or null if unknown.
-     * @exception java.lang.Exception Basically SAXException or IOException
-     */
-    // package private 
-    void doParse (
-       String          systemId,
-       String          publicId,
-       Reader          reader,
-       InputStream     stream,
-       String          encoding
-    ) throws Exception
-    {
-       if (handler == null)
-           throw new IllegalStateException ("no callback handler");
-
-       initializeVariables ();
-
-       // predeclare the built-in entities here (replacement texts)
-       // we don't need to intern(), since we're guaranteed literals
-       // are always (globally) interned.
-       setInternalEntity ("amp", "&#38;");
-       setInternalEntity ("lt", "&#60;");
-       setInternalEntity ("gt", "&#62;");
-       setInternalEntity ("apos", "&#39;");
-       setInternalEntity ("quot", "&#34;");
-
-       try {
-           // pushURL first to ensure locator is correct in startDocument
-           // ... it might report an IO or encoding exception.
-           handler.startDocument ();
-           pushURL (false, "[document]",
-                       // default baseURI: null
-                   new String [] { publicId, systemId, null},
-                   reader, stream, encoding, false);
-
-           parseDocument ();
-       } catch (EOFException e){
-           //empty input
-           error("empty document, with no root element.");
-       }finally {
-           if (reader != null)
-               try { reader.close ();
-               } catch (IOException e) { /* ignore */ }
-           if (stream != null)
-               try { stream.close ();
-               } catch (IOException e) { /* ignore */ }
-           if (is != null)
-               try { is.close ();
-               } catch (IOException e) { /* ignore */ }
-           if (reader != null)
-               try {
-                   reader.close ();
-               } catch (IOException e) { /* ignore */
-               }
-           scratch = null;
-       }
-    }
+  /**
+   * Report typical case fatal errors.
+   */
+  private void error(String message)
+    throws SAXException
+  {
+    handler.fatal(message);
+  }
 
+  //////////////////////////////////////////////////////////////////////
+  // Major syntactic productions.
+  //////////////////////////////////////////////////////////////////////
 
-    ////////////////////////////////////////////////////////////////////////
-    // Constants.
-    ////////////////////////////////////////////////////////////////////////
+  /**
+   * Parse an XML document.
+   * <pre>
+   * [1] document ::= prolog element Misc*
+   * </pre>
+   * <p>This is the top-level parsing function for a single XML
+   * document.  As a minimum, a well-formed document must have
+   * a document element, and a valid document must have a prolog
+   * (one with doctype) as well.
+   */
+  private void parseDocument()
+    throws Exception
+  {
+    try
+      {                                       // added by MHK
+        boolean sawDTD = parseProlog();
+        require('<');
+        parseElement(!sawDTD);
+      }
+    catch (EOFException ee)
+      {                 // added by MHK
+        error("premature end of file", "[EOF]", null);
+      }
+    
+    try
+      {
+        parseMisc();   //skip all white, PIs, and comments
+        char c = readCh();    //if this doesn't throw an exception...
+        error("unexpected characters after document end", c, null);
+      }
+    catch (EOFException e)
+      {
+        return;
+      }
+  }
+  
+  static final char[] startDelimComment = { '<', '!', '-', '-' };
+  static final char[] endDelimComment = { '-', '-' };
 
-    //
-    // Constants for element content type.
-    //
+  /**
+   * Skip a comment.
+   * <pre>
+   * [15] Comment ::= '&lt;!--' ((Char - '-') | ('-' (Char - '-')))* "-->"
+   * </pre>
+   * <p> (The <code>&lt;!--</code> has already been read.)
+   */
+  private void parseComment()
+    throws Exception
+  {
+    char c;
+    boolean saved = expandPE;
+    
+    expandPE = false;
+    parseUntil(endDelimComment);
+    require('>');
+    expandPE = saved;
+    handler.comment(dataBuffer, 0, dataBufferPos);
+    dataBufferPos = 0;
+  }
+  
+  static final char[] startDelimPI = { '<', '?' };
+  static final char[] endDelimPI = { '?', '>' };
 
-    /**
-     * Constant: an element has not been declared.
-     * @see #getElementContentType
-     */
-    public final static int CONTENT_UNDECLARED = 0;
+  /**
+   * Parse a processing instruction and do a call-back.
+   * <pre>
+   * [16] PI ::= '&lt;?' PITarget
+   *    (S (Char* - (Char* '?&gt;' Char*)))?
+   *    '?&gt;'
+   * [17] PITarget ::= Name - ( ('X'|'x') ('M'|m') ('L'|l') )
+   * </pre>
+   * <p> (The <code>&lt;?</code> has already been read.)
+   */
+  private void parsePI()
+    throws SAXException, IOException
+  {
+    String name;
+    boolean saved = expandPE;
+    
+    expandPE = false;
+    name = readNmtoken(true);
+    //NE08
+    if (name.indexOf(':') >= 0)
+      {
+        error("Illegal character(':') in processing instruction name ",
+              name, null);
+      }
+    if ("xml".equalsIgnoreCase(name))
+      {
+        error("Illegal processing instruction target", name, null);
+      }
+    if (!tryRead(endDelimPI))
+      {
+        requireWhitespace();
+        parseUntil(endDelimPI);
+      }
+    expandPE = saved;
+    handler.processingInstruction(name, dataBufferToString());
+  }
+  
+  static final char[] endDelimCDATA = { ']', ']', '>' };
 
-    /**
-     * Constant: the element has a content model of ANY.
-     * @see #getElementContentType
-     */
-    public final static int CONTENT_ANY = 1;
+  private boolean isDirtyCurrentElement;
 
-    /**
-     * Constant: the element has declared content of EMPTY.
-     * @see #getElementContentType
-     */
-    public final static int CONTENT_EMPTY = 2;
+  /**
+   * Parse a CDATA section.
+   * <pre>
+   * [18] CDSect ::= CDStart CData CDEnd
+   * [19] CDStart ::= '&lt;![CDATA['
+   * [20] CData ::= (Char* - (Char* ']]&gt;' Char*))
+   * [21] CDEnd ::= ']]&gt;'
+   * </pre>
+   * <p> (The '&lt;![CDATA[' has already been read.)
+   */
+  private void parseCDSect()
+    throws Exception
+  {
+    parseUntil(endDelimCDATA);
+    dataBufferFlush();
+  }
 
-    /**
-     * Constant: the element has mixed content.
-     * @see #getElementContentType
-     */
-    public final static int CONTENT_MIXED = 3;
+  /**
+   * Parse the prolog of an XML document.
+   * <pre>
+   * [22] prolog ::= XMLDecl? Misc* (Doctypedecl Misc*)?
+   * </pre>
+   * <p>We do not look for the XML declaration here, because it was
+   * handled by pushURL ().
+   * @see pushURL
+   * @return true if a DTD was read.
+   */
+  private boolean parseProlog()
+    throws Exception
+  {
+    parseMisc();
 
-    /**
-     * Constant: the element has element content.
-     * @see #getElementContentType
-     */
-    public final static int CONTENT_ELEMENTS = 4;
+    if (tryRead("<!DOCTYPE"))
+      {
+        parseDoctypedecl();
+        parseMisc();
+        return true;
+      }
+    return false;
+  }
 
+  private void checkLegalVersion(String version)
+    throws SAXException
+  {
+    int len = version.length();
+    for (int i = 0; i < len; i++)
+      {
+        char c = version.charAt(i);
+        if ('0' <= c && c <= '9')
+          {
+            continue;
+          }
+        if (c == '_' || c == '.' || c == ':' || c == '-')
+          {
+            continue;
+          }
+        if ('a' <= c && c <= 'z')
+          {
+            continue;
+          }
+        if ('A' <= c && c <= 'Z')
+          {
+            continue;
+          }
+        error ("illegal character in version", version, "1.0");
+      }
+  }
 
-    //
-    // Constants for the entity type.
-    //
+  /**
+   * Parse the XML declaration.
+   * <pre>
+   * [23] XMLDecl ::= '&lt;?xml' VersionInfo EncodingDecl? SDDecl? S? '?&gt;'
+   * [24] VersionInfo ::= S 'version' Eq
+   *    ("'" VersionNum "'" | '"' VersionNum '"' )
+   * [26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')*
+   * [32] SDDecl ::= S 'standalone' Eq
+   *    ( "'"" ('yes' | 'no') "'"" | '"' ("yes" | "no") '"' )
+   * [80] EncodingDecl ::= S 'encoding' Eq
+   *    ( "'" EncName "'" | "'" EncName "'" )
+   * [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
+   * </pre>
+   * <p> (The <code>&lt;?xml</code> and whitespace have already been read.)
+   * @return the encoding in the declaration, uppercased; or null
+   * @see #parseTextDecl
+   * @see #setupDecoding
+   */
+  private String parseXMLDecl(boolean ignoreEncoding)
+    throws SAXException, IOException
+  {
+    String version;
+    String encodingName = null;
+    String standalone = null;
+    int flags = LIT_DISABLE_CREF | LIT_DISABLE_PE | LIT_DISABLE_EREF;
+    String inputEncoding = null;
+        
+    switch (this.encoding)
+      {
+      case ENCODING_EXTERNAL:
+      case ENCODING_UTF_8:
+        inputEncoding = "UTF-8";
+        break;
+      case ENCODING_ISO_8859_1:
+        inputEncoding = "ISO-8859-1";
+        break;
+      case ENCODING_UCS_2_12:
+        inputEncoding = "UTF-16BE";
+        break;
+      case ENCODING_UCS_2_21:
+        inputEncoding = "UTF-16LE";
+        break;
+      }
+    
+    // Read the version.
+    require("version");
+    parseEq();
+    checkLegalVersion(version = readLiteral(flags));
+    if (!version.equals("1.0"))
+      {
+        if (version.equals("1.1"))
+          {
+            handler.warn("expected XML version 1.0, not: " + version);
+            xmlVersion = XML_11;
+          }
+        else
+          {
+            error("illegal XML version", version, "1.0 or 1.1");
+          }
+      }
+    else
+      {
+        xmlVersion = XML_10;
+      }
+    // Try reading an encoding declaration.
+    boolean white = tryWhitespace();
+    
+    if (tryRead("encoding"))
+      {
+        if (!white)
+          {
+            error("whitespace required before 'encoding='");
+          }
+        parseEq();
+        encodingName = readLiteral(flags);
+        if (!ignoreEncoding)
+          {
+            setupDecoding(encodingName);
+          }
+      }
+    
+    // Try reading a standalone declaration
+    if (encodingName != null)
+      {
+        white = tryWhitespace();
+      }
+    if (tryRead("standalone"))
+      {
+        if (!white)
+          {
+            error("whitespace required before 'standalone='");
+          }
+        parseEq();
+        standalone = readLiteral(flags);
+        if ("yes".equals(standalone))
+          {
+            docIsStandalone = true;
+          }
+        else if (!"no".equals(standalone))
+          {
+            error("standalone flag must be 'yes' or 'no'");
+          }
+      }
 
-    /**
-     * Constant: the entity has not been declared.
-     * @see #getEntityType
-     */
-    public final static int ENTITY_UNDECLARED = 0;
+    skipWhitespace();
+    require("?>");
 
-    /**
-     * Constant: the entity is internal.
-     * @see #getEntityType
-     */
-    public final static int ENTITY_INTERNAL = 1;
+    if (inputEncoding == null)
+      {
+        inputEncoding = encodingName;
+      }
+    handler.xmlDecl(version, encodingName, docIsStandalone,
+                    inputEncoding);
+    
+    return encodingName;
+  }
 
-    /**
-     * Constant: the entity is external, non-parsable data.
-     * @see #getEntityType
-     */
-    public final static int ENTITY_NDATA = 2;
+  /**
+   * Parse a text declaration.
+   * <pre>
+   * [79] TextDecl ::= '&lt;?xml' VersionInfo? EncodingDecl S? '?&gt;'
+   * [80] EncodingDecl ::= S 'encoding' Eq
+   *    ( '"' EncName '"' | "'" EncName "'" )
+   * [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
+   * </pre>
+   * <p> (The <code>&lt;?xml</code>' and whitespace have already been read.)
+   * @return the encoding in the declaration, uppercased; or null
+   * @see #parseXMLDecl
+   * @see #setupDecoding
+   */
+  private String parseTextDecl(boolean ignoreEncoding)
+    throws SAXException, IOException
+  {
+    String encodingName = null;
+    int flags = LIT_DISABLE_CREF | LIT_DISABLE_PE | LIT_DISABLE_EREF;
+
+    // Read an optional version.
+    if (tryRead ("version"))
+      {
+        String version;
+        parseEq();
+        checkLegalVersion(version = readLiteral(flags));
+        
+        if (version.equals("1.1"))
+          {
+            if (xmlVersion == XML_10)
+              {
+                error("external subset has later version number.", "1.0",
+                      version);    
+              }
+            handler.warn("expected XML version 1.0, not: " + version);
+            xmlVersion = XML_11;
+          }
+        else if (!version.equals("1.0"))
+          {
+            error("illegal XML version", version, "1.0 or 1.1");
+          }
+        requireWhitespace();
+      }
+    
+    // Read the encoding.
+    require("encoding");
+    parseEq();
+    encodingName = readLiteral(flags);
+    if (!ignoreEncoding)
+      {
+        setupDecoding(encodingName);
+      }
+    skipWhitespace();
+    require("?>");
+    
+    return encodingName;
+  }
 
-    /**
-     * Constant: the entity is external XML data.
-     * @see #getEntityType
+  /**
+   * Sets up internal state so that we can decode an entity using the
+   * specified encoding.  This is used when we start to read an entity
+   * and we have been given knowledge of its encoding before we start to
+   * read any data (e.g. from a SAX input source or from a MIME type).
+   *
+   * <p> It is also used after autodetection, at which point only very
+   * limited adjustments to the encoding may be used (switching between
+   * related builtin decoders).
+   *
+   * @param encodingName The name of the encoding specified by the user.
+   * @exception IOException if the encoding isn't supported either
+   *  internally to this parser, or by the hosting JVM.
+   * @see #parseXMLDecl
+   * @see #parseTextDecl
      */
-    public final static int ENTITY_TEXT = 3;
-
-
-    //
-    // Attribute type constants are interned literal strings.
-    //
-
-    //
-    // Constants for supported encodings.  "external" is just a flag.
-    //
-    private final static int ENCODING_EXTERNAL = 0;
-    private final static int ENCODING_UTF_8 = 1;
-    private final static int ENCODING_ISO_8859_1 = 2;
-    private final static int ENCODING_UCS_2_12 = 3;
-    private final static int ENCODING_UCS_2_21 = 4;
-    private final static int ENCODING_UCS_4_1234 = 5;
-    private final static int ENCODING_UCS_4_4321 = 6;
-    private final static int ENCODING_UCS_4_2143 = 7;
-    private final static int ENCODING_UCS_4_3412 = 8;
-    private final static int ENCODING_ASCII = 9;
-
-
-    //
-    // Constants for attribute default value.
-    //
-
-    /**
-     * Constant: the attribute is not declared.
-     * @see #getAttributeDefaultValueType
-     */
-    public final static int ATTRIBUTE_DEFAULT_UNDECLARED = 30;
-
-    /**
-     * Constant: the attribute has a literal default value specified.
-     * @see #getAttributeDefaultValueType
-     * @see #getAttributeDefaultValue
-     */
-    public final static int ATTRIBUTE_DEFAULT_SPECIFIED = 31;
-
-    /**
-     * Constant: the attribute was declared #IMPLIED.
-     * @see #getAttributeDefaultValueType
-     */
-    public final static int ATTRIBUTE_DEFAULT_IMPLIED = 32;
-
-    /**
-     * Constant: the attribute was declared #REQUIRED.
-     * @see #getAttributeDefaultValueType
-     */
-    public final static int ATTRIBUTE_DEFAULT_REQUIRED = 33;
-
-    /**
-     * Constant: the attribute was declared #FIXED.
-     * @see #getAttributeDefaultValueType
-     * @see #getAttributeDefaultValue
-     */
-    public final static int ATTRIBUTE_DEFAULT_FIXED = 34;
-
-
-    //
-    // Constants for input.
-    //
-    private final static int INPUT_NONE = 0;
-    private final static int INPUT_INTERNAL = 1;
-    private final static int INPUT_STREAM = 3;
-    private final static int INPUT_READER = 5;
-
-
-    //
-    // Flags for reading literals.
-    //
-       // expand general entity refs (attribute values in dtd and content)
-    private final static int LIT_ENTITY_REF = 2;
-       // normalize this value (space chars) (attributes, public ids)
-    private final static int LIT_NORMALIZE = 4;
-       // literal is an attribute value 
-    private final static int LIT_ATTRIBUTE = 8;
-       // don't expand parameter entities
-    private final static int LIT_DISABLE_PE = 16;
-       // don't expand [or parse] character refs
-    private final static int LIT_DISABLE_CREF = 32;
-       // don't parse general entity refs
-    private final static int LIT_DISABLE_EREF = 64;
-       // literal is a public ID value 
-    private final static int LIT_PUBID = 256;
-
-
-    //
-    // Flags affecting PE handling in DTDs (if expandPE is true).
-    // PEs expand with space padding, except inside literals.
-    //
-    private final static int CONTEXT_NORMAL = 0;
-    private final static int CONTEXT_LITERAL = 1;
-
-
-    //////////////////////////////////////////////////////////////////////
-    // Error reporting.
-    //////////////////////////////////////////////////////////////////////
-
-
-    /**
-     * Report an error.
-     * @param message The error message.
-     * @param textFound The text that caused the error (or null).
-     * @see SAXDriver#error
-     * @see #line
-     */
-    private void error (String message, String textFound, String textExpected)
-    throws SAXException
-    {
-       if (textFound != null) {
-           message = message + " (found \"" + textFound + "\")";
-       }
-       if (textExpected != null) {
-           message = message + " (expected \"" + textExpected + "\")";
-       }
-       handler.fatal (message);
-
-       // "can't happen"
-       throw new SAXException (message);
-    }
-
-
-    /**
-     * Report a serious error.
-     * @param message The error message.
-     * @param textFound The text that caused the error (or null).
-     */
-    private void error (String message, char textFound, String textExpected)
-    throws SAXException
-    {
-       error (message, new Character (textFound).toString (), textExpected);
-    }
-
-    /** Report typical case fatal errors. */
-    private void error (String message)
-    throws SAXException
-    {
-       handler.fatal (message);
-    }
-
-
-    //////////////////////////////////////////////////////////////////////
-    // Major syntactic productions.
-    //////////////////////////////////////////////////////////////////////
-
-
-    /**
-     * Parse an XML document.
-     * <pre>
-     * [1] document ::= prolog element Misc*
-     * </pre>
-     * <p>This is the top-level parsing function for a single XML
-     * document.  As a minimum, a well-formed document must have
-     * a document element, and a valid document must have a prolog
-     * (one with doctype) as well.
-     */
-    private void parseDocument ()
-    throws Exception
-    {
-        try {                                       // added by MHK
-           boolean sawDTD = parseProlog ();
-           require ('<');
-           parseElement (!sawDTD);
-        } catch (EOFException ee) {                 // added by MHK
-            error("premature end of file", "[EOF]", null);
-        }
-        
-       try {
-           parseMisc ();   //skip all white, PIs, and comments
-           char c = readCh ();    //if this doesn't throw an exception...
-           error ("unexpected characters after document end", c, null);
-       } catch (EOFException e) {
-           return;
-       }
-    }
-
-    static final char  startDelimComment [] = { '<', '!', '-', '-' };
-    static final char  endDelimComment [] = { '-', '-' };
-
-    /**
-     * Skip a comment.
-     * <pre>
-     * [15] Comment ::= '&lt;!--' ((Char - '-') | ('-' (Char - '-')))* "-->"
-     * </pre>
-     * <p> (The <code>&lt;!--</code> has already been read.)
-     */
-    private void parseComment ()
-    throws Exception
-    {
-       char c;
-       boolean saved = expandPE;
-
-       expandPE = false;
-       parseUntil (endDelimComment);
-       require ('>');
-       expandPE = saved;
-       handler.comment (dataBuffer, 0, dataBufferPos);
-       dataBufferPos = 0;
-    }
-
-    static final char  startDelimPI [] = { '<', '?' };
-    static final char  endDelimPI [] = { '?', '>' };
-
-    /**
-     * Parse a processing instruction and do a call-back.
-     * <pre>
-     * [16] PI ::= '&lt;?' PITarget
-     *         (S (Char* - (Char* '?&gt;' Char*)))?
-     *         '?&gt;'
-     * [17] PITarget ::= Name - ( ('X'|'x') ('M'|m') ('L'|l') )
-     * </pre>
-     * <p> (The <code>&lt;?</code> has already been read.)
-     */
-    private void parsePI ()
+  private void setupDecoding(String encodingName)
     throws SAXException, IOException
-    {
-       String name;
-       boolean saved = expandPE;
-
-       expandPE = false;
-       name = readNmtoken (true);
-       //NE08
-       if (name.indexOf(':') >= 0)
-           error ("Illegal character(':') in processing instruction name ", name, null);
-       if ("xml".equalsIgnoreCase (name))
-           error ("Illegal processing instruction target", name, null);
-       if (!tryRead (endDelimPI)) {
-           requireWhitespace ();
-           parseUntil (endDelimPI);
-       }
-       expandPE = saved;
-       handler.processingInstruction (name, dataBufferToString ());
-    }
-
-
-    static final char  endDelimCDATA [] = { ']', ']', '>' };
-
-       private boolean isDirtyCurrentElement;
-
-    /**
-     * Parse a CDATA section.
-     * <pre>
-     * [18] CDSect ::= CDStart CData CDEnd
-     * [19] CDStart ::= '&lt;![CDATA['
-     * [20] CData ::= (Char* - (Char* ']]&gt;' Char*))
-     * [21] CDEnd ::= ']]&gt;'
-     * </pre>
-     * <p> (The '&lt;![CDATA[' has already been read.)
-     */
-    private void parseCDSect ()
+  {
+    encodingName = encodingName.toUpperCase();
+    
+    // ENCODING_EXTERNAL indicates an encoding that wasn't
+    // autodetected ... we can use builtin decoders, or
+    // ones from the JVM (InputStreamReader).
+    
+    // Otherwise we can only tweak what was autodetected, and
+    // only for single byte (ASCII derived) builtin encodings.
+    
+    // ASCII-derived encodings
+    if (encoding == ENCODING_UTF_8 || encoding == ENCODING_EXTERNAL)
+      {
+        if (encodingName.equals("ISO-8859-1")
+            || encodingName.equals("8859_1")
+            || encodingName.equals("ISO8859_1"))
+          {
+            encoding = ENCODING_ISO_8859_1;
+            return;
+          }
+        else if (encodingName.equals("US-ASCII")
+                 || encodingName.equals("ASCII"))
+          {
+            encoding = ENCODING_ASCII;
+            return;
+          }
+        else if (encodingName.equals("UTF-8")
+                 || encodingName.equals("UTF8"))
+          {
+            encoding = ENCODING_UTF_8;
+            return;
+          }
+        else if (encoding != ENCODING_EXTERNAL)
+          {
+            // used to start with a new reader ...
+            throw new UnsupportedEncodingException(encodingName);
+          }
+        // else fallthrough ...
+        // it's ASCII-ish and something other than a builtin
+      }
+    
+    // Unicode and such
+    if (encoding == ENCODING_UCS_2_12 || encoding == ENCODING_UCS_2_21)
+      {
+        if (!(encodingName.equals("ISO-10646-UCS-2")
+              || encodingName.equals("UTF-16")
+              || encodingName.equals("UTF-16BE")
+              || encodingName.equals("UTF-16LE")))
+          {
+            error("unsupported Unicode encoding", encodingName, "UTF-16");
+          }
+        return;
+      }
+    
+    // four byte encodings
+    if (encoding == ENCODING_UCS_4_1234
+        || encoding == ENCODING_UCS_4_4321
+        || encoding == ENCODING_UCS_4_2143
+        || encoding == ENCODING_UCS_4_3412)
+      {
+        // Strictly:  "UCS-4" == "UTF-32BE"; also, "UTF-32LE" exists
+        if (!encodingName.equals("ISO-10646-UCS-4"))
+          {
+            error("unsupported 32-bit encoding", encodingName,
+                  "ISO-10646-UCS-4");
+          }
+        return;
+      }
+    
+    // assert encoding == ENCODING_EXTERNAL
+    // if (encoding != ENCODING_EXTERNAL)
+    //     throw new RuntimeException ("encoding = " + encoding);
+    
+    if (encodingName.equals("UTF-16BE"))
+      {
+        encoding = ENCODING_UCS_2_12;
+        return;
+      }
+    if (encodingName.equals("UTF-16LE"))
+      {
+        encoding = ENCODING_UCS_2_21;
+        return;
+      }
+    
+    // We couldn't use the builtin decoders at all.  But we can try to
+    // create a reader, since we haven't messed up buffering.  Tweak
+    // the encoding name if necessary.
+    
+    if (encodingName.equals("UTF-16")
+        || encodingName.equals("ISO-10646-UCS-2"))
+      {
+        encodingName = "Unicode";
+      }
+    // Ignoring all the EBCDIC aliases here
+    
+    reader = new InputStreamReader(is, encodingName);
+    sourceType = INPUT_READER;
+  }
+  
+  /**
+   * Parse miscellaneous markup outside the document element and DOCTYPE
+   * declaration.
+   * <pre>
+   * [27] Misc ::= Comment | PI | S
+   * </pre>
+   */
+  private void parseMisc()
     throws Exception
-    {
-       parseUntil (endDelimCDATA);
-       dataBufferFlush ();
-    }
-
+  {
+    while (true)
+      {
+        skipWhitespace();
+        if (tryRead(startDelimPI))
+          {
+            parsePI();
+          }
+        else if (tryRead(startDelimComment))
+          {
+            parseComment();
+          }
+        else
+          {
+            return;
+          }
+      }
+  }
 
-    /**
-     * Parse the prolog of an XML document.
-     * <pre>
-     * [22] prolog ::= XMLDecl? Misc* (Doctypedecl Misc*)?
-     * </pre>
-     * <p>We do not look for the XML declaration here, because it was
-     * handled by pushURL ().
-     * @see pushURL
-     * @return true if a DTD was read.
-     */
-    private boolean parseProlog ()
+  /**
+   * Parse a document type declaration.
+   * <pre>
+   * [28] doctypedecl ::= '&lt;!DOCTYPE' S Name (S ExternalID)? S?
+   *    ('[' (markupdecl | PEReference | S)* ']' S?)? '&gt;'
+   * </pre>
+   * <p> (The <code>&lt;!DOCTYPE</code> has already been read.)
+   */
+  private void parseDoctypedecl()
     throws Exception
-    {
-       parseMisc ();
-
-       if (tryRead ("<!DOCTYPE")) {
-           parseDoctypedecl ();
-           parseMisc ();
-           return true;
-       }
-       return false;
-    }
+  {
+    String rootName;
+    ExternalIdentifiers ids;
 
-    private void checkLegalVersion (String version)
-    throws SAXException
-    {
-       int len = version.length ();
-       for (int i = 0; i < len; i++) {
-           char c = version.charAt (i);
-           if ('0' <= c && c <= '9')
-               continue;
-           if (c == '_' || c == '.' || c == ':' || c == '-')
-               continue;
-           if ('a' <= c && c <= 'z')
-               continue;
-           if ('A' <= c && c <= 'Z')
-               continue;
-           error ("illegal character in version", version, "1.0");
-       }
-    }
+    // Read the document type name.
+    requireWhitespace();
+    rootName = readNmtoken(true);
 
+    // Read the External subset's IDs
+    skipWhitespace();
+    ids = readExternalIds(false, true);
 
-    /**
-     * Parse the XML declaration.
-     * <pre>
-     * [23] XMLDecl ::= '&lt;?xml' VersionInfo EncodingDecl? SDDecl? S? '?&gt;'
-     * [24] VersionInfo ::= S 'version' Eq
-     *         ("'" VersionNum "'" | '"' VersionNum '"' )
-     * [26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')*
-     * [32] SDDecl ::= S 'standalone' Eq
-     *         ( "'"" ('yes' | 'no') "'"" | '"' ("yes" | "no") '"' )
-     * [80] EncodingDecl ::= S 'encoding' Eq
-     *         ( "'" EncName "'" | "'" EncName "'" )
-     * [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
-     * </pre>
-     * <p> (The <code>&lt;?xml</code> and whitespace have already been read.)
-     * @return the encoding in the declaration, uppercased; or null
-     * @see #parseTextDecl
-     * @see #setupDecoding
-     */
-    private String parseXMLDecl (boolean ignoreEncoding)
-    throws SAXException, IOException
-    {
-       String  version;
-       String  encodingName = null;
-       String  standalone = null;
-       int     flags = LIT_DISABLE_CREF | LIT_DISABLE_PE | LIT_DISABLE_EREF;
-        String inputEncoding = null;
+    // report (a) declaration of name, (b) lexical info (ids)
+    handler.doctypeDecl(rootName, ids.publicId, ids.systemId);
+    
+    // Internal subset is parsed first, if present
+    skipWhitespace();
+    if (tryRead('['))
+      {
         
-        switch (this.encoding)
+        // loop until the subset ends
+        while (true)
           {
-          case ENCODING_EXTERNAL:
-          case ENCODING_UTF_8:
-            inputEncoding = "UTF-8";
-            break;
-          case ENCODING_ISO_8859_1:
-            inputEncoding = "ISO-8859-1";
-            break;
-          case ENCODING_UCS_2_12:
-            inputEncoding = "UTF-16BE";
-            break;
-          case ENCODING_UCS_2_21:
-            inputEncoding = "UTF-16LE";
-            break;
+            doReport = expandPE = true;
+            skipWhitespace();
+            doReport = expandPE = false;
+            if (tryRead(']'))
+              {
+                break;     // end of subset
+              }
+            else
+              {
+                // WFC, PEs in internal subset (only between decls)
+                peIsError = expandPE = true;
+                parseMarkupdecl();
+                peIsError = expandPE = false;
+              }
           }
-
-       // Read the version.
-       require ("version");
-       parseEq ();
-       checkLegalVersion (version = readLiteral (flags));
-       if (!version.equals ("1.0")){
-           if(version.equals ("1.1")){
-               handler.warn ("expected XML version 1.0, not: " + version);
-               xmlVersion = XML_11;
-           }else {
-               error("illegal XML version", version, "1.0 or 1.1");
-           }
-       }
-       else
-           xmlVersion = XML_10;
-       // Try reading an encoding declaration.
-       boolean white = tryWhitespace ();
-
-       if (tryRead ("encoding")) {
-           if (!white)
-               error ("whitespace required before 'encoding='");
-           parseEq ();
-           encodingName = readLiteral (flags);
-           if (!ignoreEncoding)
-               setupDecoding (encodingName);
-       }
-
-       // Try reading a standalone declaration
-       if (encodingName != null)
-           white = tryWhitespace ();
-       if (tryRead ("standalone")) {
-           if (!white)
-               error ("whitespace required before 'standalone='");
-           parseEq ();
-           standalone = readLiteral (flags);
-           if ("yes".equals (standalone))
-               docIsStandalone = true;
-           else if (!"no".equals (standalone))
-               error ("standalone flag must be 'yes' or 'no'");
-       }
-
-       skipWhitespace ();
-       require ("?>");
-
-        if (inputEncoding == null)
-          {
-            inputEncoding = encodingName;
-          }
-        handler.xmlDecl(version, encodingName, "yes".equals(standalone),
-                        inputEncoding);
-
-       return encodingName;
-    }
-
-
-    /**
-     * Parse a text declaration.
-     * <pre>
-     * [79] TextDecl ::= '&lt;?xml' VersionInfo? EncodingDecl S? '?&gt;'
-     * [80] EncodingDecl ::= S 'encoding' Eq
-     *         ( '"' EncName '"' | "'" EncName "'" )
-     * [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
-     * </pre>
-     * <p> (The <code>&lt;?xml</code>' and whitespace have already been read.)
-     * @return the encoding in the declaration, uppercased; or null
-     * @see #parseXMLDecl
-     * @see #setupDecoding
-     */
-    private String parseTextDecl (boolean ignoreEncoding)
-    throws SAXException, IOException
-    {
-       String  encodingName = null;
-       int     flags = LIT_DISABLE_CREF | LIT_DISABLE_PE | LIT_DISABLE_EREF;
-
-       // Read an optional version.
-       if (tryRead ("version")) {
-           String version;
-           parseEq ();
-           checkLegalVersion (version = readLiteral (flags));
-           
-           if (version.equals ("1.1")){
-               if (xmlVersion == XML_10){
-                  error ("external subset has later version number.", "1.0", version);    
-               }
-               handler.warn ("expected XML version 1.0, not: " + version);
-               xmlVersion = XML_11;
-             }else if(!version.equals ("1.0")) {
-                error("illegal XML version", version, "1.0 or 1.1");
-            }
-           requireWhitespace ();
-       }
-
-
-       // Read the encoding.
-       require ("encoding");
-       parseEq ();
-       encodingName = readLiteral (flags);
-       if (!ignoreEncoding)
-           setupDecoding (encodingName);
-
-       skipWhitespace ();
-       require ("?>");
-
-       return encodingName;
-    }
-
-
-    /**
-     * Sets up internal state so that we can decode an entity using the
-     * specified encoding.  This is used when we start to read an entity
-     * and we have been given knowledge of its encoding before we start to
-     * read any data (e.g. from a SAX input source or from a MIME type).
-     *
-     * <p> It is also used after autodetection, at which point only very
-     * limited adjustments to the encoding may be used (switching between
-     * related builtin decoders).
-     *
-     * @param encodingName The name of the encoding specified by the user.
-     * @exception IOException if the encoding isn't supported either
-     * internally to this parser, or by the hosting JVM.
-     * @see #parseXMLDecl
-     * @see #parseTextDecl
-     */
-    private void setupDecoding (String encodingName)
-    throws SAXException, IOException
-    {
-       encodingName = encodingName.toUpperCase ();
-
-       // ENCODING_EXTERNAL indicates an encoding that wasn't
-       // autodetected ... we can use builtin decoders, or
-       // ones from the JVM (InputStreamReader).
-
-       // Otherwise we can only tweak what was autodetected, and
-       // only for single byte (ASCII derived) builtin encodings.
-
-       // ASCII-derived encodings
-       if (encoding == ENCODING_UTF_8 || encoding == ENCODING_EXTERNAL) {
-           if (encodingName.equals ("ISO-8859-1")
-                   || encodingName.equals ("8859_1")
-                   || encodingName.equals ("ISO8859_1")
-             ) {
-               encoding = ENCODING_ISO_8859_1;
-               return;
-           } else if (encodingName.equals ("US-ASCII")
-                       || encodingName.equals ("ASCII")) {
-               encoding = ENCODING_ASCII;
-               return;
-           } else if (encodingName.equals ("UTF-8")
-                       || encodingName.equals ("UTF8")) {
-               encoding = ENCODING_UTF_8;
-               return;
-           } else if (encoding != ENCODING_EXTERNAL) {
-               // used to start with a new reader ...
-               throw new UnsupportedEncodingException (encodingName);
-           }
-           // else fallthrough ...
-           // it's ASCII-ish and something other than a builtin
-       }
-
-       // Unicode and such
-       if (encoding == ENCODING_UCS_2_12 || encoding == ENCODING_UCS_2_21) {
-           if (!(encodingName.equals ("ISO-10646-UCS-2")
-                   || encodingName.equals ("UTF-16")
-                   || encodingName.equals ("UTF-16BE")
-                   || encodingName.equals ("UTF-16LE")))
-               error ("unsupported Unicode encoding",
-                      encodingName,
-                      "UTF-16");
-           return;
-       }
-
-       // four byte encodings
-       if (encoding == ENCODING_UCS_4_1234
-               || encoding == ENCODING_UCS_4_4321
-               || encoding == ENCODING_UCS_4_2143
-               || encoding == ENCODING_UCS_4_3412) {
-           // Strictly:  "UCS-4" == "UTF-32BE"; also, "UTF-32LE" exists
-           if (!encodingName.equals ("ISO-10646-UCS-4"))
-               error ("unsupported 32-bit encoding",
-                      encodingName,
-                      "ISO-10646-UCS-4");
-           return;
-       }
-
-       // assert encoding == ENCODING_EXTERNAL
-       // if (encoding != ENCODING_EXTERNAL)
-       //     throw new RuntimeException ("encoding = " + encoding);
-
-       if (encodingName.equals ("UTF-16BE")) {
-           encoding = ENCODING_UCS_2_12;
-           return;
-       }
-       if (encodingName.equals ("UTF-16LE")) {
-           encoding = ENCODING_UCS_2_21;
-           return;
-       }
-
-       // We couldn't use the builtin decoders at all.  But we can try to
-       // create a reader, since we haven't messed up buffering.  Tweak
-       // the encoding name if necessary.
-
-       if (encodingName.equals ("UTF-16")
-               || encodingName.equals ("ISO-10646-UCS-2"))
-           encodingName = "Unicode";
-       // Ignoring all the EBCDIC aliases here
-
-       reader = new InputStreamReader (is, encodingName);
-       sourceType = INPUT_READER;
-    }
-
-
-    /**
-     * Parse miscellaneous markup outside the document element and DOCTYPE
-     * declaration.
-     * <pre>
-     * [27] Misc ::= Comment | PI | S
-     * </pre>
-     */
-    private void parseMisc ()
-    throws Exception
-    {
-       while (true) {
-           skipWhitespace ();
-           if (tryRead (startDelimPI)) {
-               parsePI ();
-           } else if (tryRead (startDelimComment)) {
-               parseComment ();
-           } else {
-               return;
-           }
-       }
-    }
-
-
-    /**
-     * Parse a document type declaration.
-     * <pre>
-     * [28] doctypedecl ::= '&lt;!DOCTYPE' S Name (S ExternalID)? S?
-     *         ('[' (markupdecl | PEReference | S)* ']' S?)? '&gt;'
-     * </pre>
-     * <p> (The <code>&lt;!DOCTYPE</code> has already been read.)
-     */
-    private void parseDoctypedecl ()
-    throws Exception
-    {
-       String rootName, ids[];
-
-       // Read the document type name.
-       requireWhitespace ();
-       rootName = readNmtoken (true);
-
-       // Read the External subset's IDs
-       skipWhitespace ();
-       ids = readExternalIds (false, true);
-
-       // report (a) declaration of name, (b) lexical info (ids)
-       handler.doctypeDecl (rootName, ids [0], ids [1]);
-
-       // Internal subset is parsed first, if present
-       skipWhitespace ();
-       if (tryRead ('[')) {
-
-           // loop until the subset ends
-           while (true) {
-               doReport = expandPE = true;
-               skipWhitespace ();
-               doReport = expandPE = false;
-               if (tryRead (']')) {
-                   break;              // end of subset
-               } else {
-                   // WFC, PEs in internal subset (only between decls)
-                   peIsError = expandPE = true;
-                   parseMarkupdecl ();
-                   peIsError = expandPE = false;
-               }
-           }
-       }
-       skipWhitespace ();
-       require ('>');
-
-       // Read the external subset, if any
-       InputSource     subset;
-
-       if (ids [1] == null)
-           subset = handler.getExternalSubset (rootName,
-                       handler.getSystemId ());
-       else
-           subset = null;
-       if (ids [1] != null || subset != null) {
-           pushString (null, ">");
-
-           // NOTE:  [dtd] is so we say what SAX2 expects,
-           // though it's misleading (subset, not entire dtd)
-           if (ids [1] != null)
-               pushURL (true, "[dtd]", ids, null, null, null, true);
-           else {
-               handler.warn ("modifying document by adding external subset");
-               pushURL (true, "[dtd]",
-                   new String [] { subset.getPublicId (),
-                           subset.getSystemId (), null },
-                   subset.getCharacterStream (),
-                   subset.getByteStream (),
-                   subset.getEncoding (),
-                   false);
-           }
-
-           // Loop until we end up back at '>'
-           while (true) {
-               doReport = expandPE = true;
-               skipWhitespace ();
-               doReport = expandPE = false;
-               if (tryRead ('>')) {
-                   break;
-               } else {
-                   expandPE = true;
-                   parseMarkupdecl ();
-                   expandPE = false;
-               }
-           }
-
-           // the ">" string isn't popped yet
-           if (inputStack.size () != 1)
-               error ("external subset has unmatched '>'");
-       }
-
-       // done dtd
-       handler.endDoctype ();
-       expandPE = false;
-       doReport = true;
-    }
-
-
-    /**
-     * Parse a markup declaration in the internal or external DTD subset.
-     * <pre>
-     * [29] markupdecl ::= elementdecl | Attlistdecl | EntityDecl
-     *         | NotationDecl | PI | Comment
-     * [30] extSubsetDecl ::= (markupdecl | conditionalSect
-     *         | PEReference | S) *
-     * </pre>
-     * <p> Reading toplevel PE references is handled as a lexical issue
-     * by the caller, as is whitespace.
-     */
-    private void parseMarkupdecl ()
+      }
+    skipWhitespace();
+    require('>');
+    
+    // Read the external subset, if any
+    InputSource subset;
+    
+    if (ids.systemId == null)
+      {
+        subset = handler.getExternalSubset(rootName,
+                                           handler.getSystemId());
+      }
+    else
+      {
+        subset = null;
+      }
+    if (ids.systemId != null || subset != null)
+      {
+        pushString(null, ">");
+      
+        // NOTE:  [dtd] is so we say what SAX2 expects,
+        // though it's misleading (subset, not entire dtd)
+        if (ids.systemId != null)
+          {
+            pushURL(true, "[dtd]", ids, null, null, null, true);
+          }
+        else
+          {
+            handler.warn("modifying document by adding external subset");
+            pushURL(true, "[dtd]",
+                    new ExternalIdentifiers(subset.getPublicId(),
+                                            subset.getSystemId(),
+                                            null),
+                    subset.getCharacterStream(),
+                    subset.getByteStream(),
+                    subset.getEncoding(),
+                    false);
+          }
+        
+        // Loop until we end up back at '>'
+        while (true)
+          {
+            doReport = expandPE = true;
+            skipWhitespace();
+            doReport = expandPE = false;
+            if (tryRead('>'))
+              {
+                break;
+              }
+            else
+              {
+                expandPE = true;
+                parseMarkupdecl();
+                expandPE = false;
+              }
+          }
+        
+        // the ">" string isn't popped yet
+        if (inputStack.size() != 1)
+          {
+            error("external subset has unmatched '>'");
+          }
+      }
+    
+    // done dtd
+    handler.endDoctype();
+    expandPE = false;
+    doReport = true;
+  }
+  
+  /**
+   * Parse a markup declaration in the internal or external DTD subset.
+   * <pre>
+   * [29] markupdecl ::= elementdecl | Attlistdecl | EntityDecl
+   *    | NotationDecl | PI | Comment
+   * [30] extSubsetDecl ::= (markupdecl | conditionalSect
+   *    | PEReference | S) *
+   * </pre>
+   * <p> Reading toplevel PE references is handled as a lexical issue
+   * by the caller, as is whitespace.
+   */
+  private void parseMarkupdecl()
     throws Exception
-    {
-       char    saved [] = null;
-       boolean savedPE = expandPE;
-
-       // prevent "<%foo;" and ensures saved entity is right
-       require ('<');
-       unread ('<');
-       expandPE = false;
-
-       if (tryRead ("<!ELEMENT")) {
-           saved = readBuffer;
-           expandPE = savedPE;
-           parseElementDecl ();
-       } else if (tryRead ("<!ATTLIST")) {
-           saved = readBuffer;
-           expandPE = savedPE;
-           parseAttlistDecl ();
-       } else if (tryRead ("<!ENTITY")) {
-           saved = readBuffer;
-           expandPE = savedPE;
-           parseEntityDecl ();
-       } else if (tryRead ("<!NOTATION")) {
-           saved = readBuffer;
-           expandPE = savedPE;
-           parseNotationDecl ();
-       } else if (tryRead (startDelimPI)) {
-           saved = readBuffer;
-           expandPE = savedPE;
-           parsePI ();
-       } else if (tryRead (startDelimComment)) {
-           saved = readBuffer;
-           expandPE = savedPE;
-           parseComment ();
-       } else if (tryRead ("<![")) {
-           saved = readBuffer;
-           expandPE = savedPE;
-           if (inputStack.size () > 0)
-               parseConditionalSect (saved);
-           else
-               error ("conditional sections illegal in internal subset");
-       } else {
-           error ("expected markup declaration");
-       }
-
-       // VC: Proper Decl/PE Nesting
-       if (readBuffer != saved)
-           handler.verror ("Illegal Declaration/PE nesting");
-    }
+  {
+    char[] saved = null;
+    boolean savedPE = expandPE;
 
+    // prevent "<%foo;" and ensures saved entity is right
+    require('<');
+    unread('<');
+    expandPE = false;
+    
+    if (tryRead("<!ELEMENT"))
+      {
+        saved = readBuffer;
+        expandPE = savedPE;
+        parseElementDecl();
+      }
+    else if (tryRead("<!ATTLIST"))
+      {
+        saved = readBuffer;
+        expandPE = savedPE;
+        parseAttlistDecl();
+      }
+    else if (tryRead("<!ENTITY"))
+      {
+        saved = readBuffer;
+        expandPE = savedPE;
+        parseEntityDecl();
+      }
+    else if (tryRead("<!NOTATION"))
+      {
+        saved = readBuffer;
+        expandPE = savedPE;
+        parseNotationDecl();
+      }
+    else if (tryRead(startDelimPI))
+      {
+        saved = readBuffer;
+        expandPE = savedPE;
+        parsePI();
+      }
+    else if (tryRead(startDelimComment))
+      {
+        saved = readBuffer;
+        expandPE = savedPE;
+        parseComment();
+      }
+    else if (tryRead("<!["))
+      {
+        saved = readBuffer;
+        expandPE = savedPE;
+        if (inputStack.size() > 0)
+          {
+            parseConditionalSect(saved);
+          }
+        else
+          {
+            error("conditional sections illegal in internal subset");
+          }
+      }
+    else
+      {
+        error("expected markup declaration");
+      }
 
-    /**
-     * Parse an element, with its tags.
-     * <pre>
-     * [39] element ::= EmptyElementTag | STag content ETag
-     * [40] STag ::= '&lt;' Name (S Attribute)* S? '&gt;'
-     * [44] EmptyElementTag ::= '&lt;' Name (S Attribute)* S? '/&gt;'
-     * </pre>
-     * <p> (The '&lt;' has already been read.)
-     * <p>NOTE: this method actually chains onto parseContent (), if necessary,
-     * and parseContent () will take care of calling parseETag ().
-     */
-    private void parseElement (boolean maybeGetSubset)
+    // VC: Proper Decl/PE Nesting
+    if (readBuffer != saved)
+      {
+        handler.verror("Illegal Declaration/PE nesting");
+      }
+  }
+  
+  /**
+   * Parse an element, with its tags.
+   * <pre>
+   * [39] element ::= EmptyElementTag | STag content ETag
+   * [40] STag ::= '&lt;' Name (S Attribute)* S? '&gt;'
+   * [44] EmptyElementTag ::= '&lt;' Name (S Attribute)* S? '/&gt;'
+   * </pre>
+   * <p> (The '&lt;' has already been read.)
+   * <p>NOTE: this method actually chains onto parseContent (), if necessary,
+   * and parseContent () will take care of calling parseETag ().
+   */
+  private void parseElement(boolean maybeGetSubset)
     throws Exception
-    {
-       String  gi;
-       char    c;
-       int     oldElementContent = currentElementContent;
-       String  oldElement = currentElement;
-       Object  element [];
-
-       // This is the (global) counter for the
-       // array of specified attributes.
-       tagAttributePos = 0;
-
-       // Read the element type name.
-       gi = readNmtoken (true);
-
-       // If we saw no DTD, and this is the document root element,
-       // let the application modify the input stream by providing one.
-       if (maybeGetSubset) {
-           InputSource subset = handler.getExternalSubset (gi,
-                       handler.getSystemId ());
-           if (subset != null) {
-               String  publicId = subset.getPublicId ();
-               String  systemId = subset.getSystemId ();
-
-               handler.warn ("modifying document by adding DTD");
-               handler.doctypeDecl (gi, publicId, systemId);
-               pushString (null, ">");
-
-               // NOTE:  [dtd] is so we say what SAX2 expects,
-               // though it's misleading (subset, not entire dtd)
-               pushURL (true, "[dtd]",
-                   new String [] { publicId, systemId, null },
-                   subset.getCharacterStream (),
-                   subset.getByteStream (),
-                   subset.getEncoding (),
-                   false);
-
-               // Loop until we end up back at '>'
-               while (true) {
-                   doReport = expandPE = true;
-                   skipWhitespace ();
-                   doReport = expandPE = false;
-                   if (tryRead ('>')) {
-                       break;
-                   } else {
-                       expandPE = true;
-                       parseMarkupdecl ();
-                       expandPE = false;
-                   }
-               }
-
-               // the ">" string isn't popped yet
-               if (inputStack.size () != 1)
-                   error ("external subset has unmatched '>'");
-
-               handler.endDoctype ();
-           }
-       }
-
-       // Determine the current content type.
-       currentElement = gi;
-       element = (Object []) elementInfo.get (gi);
-       currentElementContent = getContentType (element, CONTENT_ANY);
-
-       // Read the attributes, if any.
-       // After this loop, "c" is the closing delimiter.
-       boolean white = tryWhitespace ();
-       c = readCh ();
-       while (c != '/' && c != '>') {
-           unread (c);
-           if (!white)
-               error ("need whitespace between attributes");
-           parseAttribute (gi);
-           white = tryWhitespace ();
-           c = readCh ();
-       }
-
-       // Supply any defaulted attributes.
-       Enumeration atts = declaredAttributes (element);
-       if (atts != null) {
-           String aname;
+  {
+    String gi;
+    char c;
+    int oldElementContent = currentElementContent;
+    String oldElement = currentElement;
+    ElementDecl element;
+
+    // This is the (global) counter for the
+    // array of specified attributes.
+    tagAttributePos = 0;
+    
+    // Read the element type name.
+    gi = readNmtoken(true);
+    
+    // If we saw no DTD, and this is the document root element,
+    // let the application modify the input stream by providing one.
+    if (maybeGetSubset)
+      {
+        InputSource subset = handler.getExternalSubset(gi,
+                                                       handler.getSystemId());
+        if (subset != null)
+          {
+            String publicId = subset.getPublicId();
+            String systemId = subset.getSystemId();
+            
+            handler.warn("modifying document by adding DTD");
+            handler.doctypeDecl(gi, publicId, systemId);
+            pushString(null, ">");
+            
+            // NOTE:  [dtd] is so we say what SAX2 expects,
+            // though it's misleading (subset, not entire dtd)
+            pushURL(true, "[dtd]",
+                    new ExternalIdentifiers(publicId, systemId, null),
+                    subset.getCharacterStream(),
+                    subset.getByteStream(),
+                    subset.getEncoding(),
+                    false);
+            
+            // Loop until we end up back at '>'
+            while (true)
+              {
+                doReport = expandPE = true;
+                skipWhitespace();
+                doReport = expandPE = false;
+                if (tryRead('>'))
+                  {
+                    break;
+                  }
+                else
+                  {
+                    expandPE = true;
+                    parseMarkupdecl();
+                    expandPE = false;
+                  }
+              }
+            
+            // the ">" string isn't popped yet
+            if (inputStack.size() != 1)
+              {
+                error("external subset has unmatched '>'");
+              }
+            
+            handler.endDoctype();
+          }
+      }
+    
+    // Determine the current content type.
+    currentElement = gi;
+    element = (ElementDecl) elementInfo.get(gi);
+    currentElementContent = getContentType(element, CONTENT_ANY);
+
+    // Read the attributes, if any.
+    // After this loop, "c" is the closing delimiter.
+    boolean white = tryWhitespace();
+    c = readCh();
+    while (c != '/' && c != '>')
+      {
+        unread(c);
+        if (!white)
+          {
+            error("need whitespace between attributes");
+          }
+        parseAttribute(gi);
+        white = tryWhitespace();
+        c = readCh();
+      }
+    
+    // Supply any defaulted attributes.
+    Iterator atts = declaredAttributes(element);
+    if (atts != null)
+      {
+        String aname;
 loop:
-           while (atts.hasMoreElements ()) {
-               aname = (String) atts.nextElement ();
-               // See if it was specified.
-               for (int i = 0; i < tagAttributePos; i++) {
-                   if (tagAttributes [i] == aname) {
-                       continue loop;
-                   }
-               }
-               // ... or has a default
-               String value = getAttributeDefaultValue (gi, aname);
-
-               if (value == null)
-                   continue;
-               handler.attribute (aname, value, false);
-           }
-       }
-
-       // Figure out if this is a start tag
-       // or an empty element, and dispatch an
-       // event accordingly.
-       switch (c) {
-       case '>':
-           handler.startElement (gi);
-           parseContent ();
-           break;
-       case '/':
-           require ('>');
-           handler.startElement (gi);
-           handler.endElement (gi);
-           break;
-       }
-
-       // Restore the previous state.
-       currentElement = oldElement;
-       currentElementContent = oldElementContent;
-    }
+        while (atts.hasNext())
+          {
+            aname = (String) atts.next();
+            // See if it was specified.
+            for (int i = 0; i < tagAttributePos; i++)
+              {
+                if (tagAttributes[i] == aname)
+                  {
+                    continue loop;
+                  }
+              }
+            // ... or has a default
+            String value = getAttributeDefaultValue(gi, aname);
+            
+            if (value == null)
+              {
+                continue;
+              }
+            handler.attribute(aname, value, false);
+          }
+      }
 
+    // Figure out if this is a start tag
+    // or an empty element, and dispatch an
+    // event accordingly.
+    switch (c)
+      {
+      case '>':
+        handler.startElement(gi);
+        parseContent();
+        break;
+      case '/':
+        require('>');
+        handler.startElement(gi);
+        handler.endElement(gi);
+        break;
+      }
 
-    /**
-     * Parse an attribute assignment.
-     * <pre>
-     * [41] Attribute ::= Name Eq AttValue
-     * </pre>
-     * @param name The name of the attribute's element.
-     * @see SAXDriver#attribute
-     */
-    private void parseAttribute (String name)
-    throws Exception
-    {
-       String aname;
-       String type;
-       String value;
-       int flags = LIT_ATTRIBUTE |  LIT_ENTITY_REF;
-
-       // Read the attribute name.
-       aname = readNmtoken (true);
-       type = getAttributeType (name, aname);
-
-       // Parse '='
-       parseEq ();
-
-       // Read the value, normalizing whitespace
-       // unless it is CDATA.
-  if (handler.getFeature (SAXDriver.FEATURE + "string-interning")) {
-    if (type == "CDATA" || type == null) {
-           value = readLiteral (flags);
-    } else {
-           value = readLiteral (flags | LIT_NORMALIZE);
-    }
-  } else {
-    if (type.equals("CDATA") || type == null) {
-           value = readLiteral (flags);
-    } else {
-           value = readLiteral (flags | LIT_NORMALIZE);
-    }
+    // Restore the previous state.
+    currentElement = oldElement;
+    currentElementContent = oldElementContent;
   }
+    
+  /**
+   * Parse an attribute assignment.
+   * <pre>
+   * [41] Attribute ::= Name Eq AttValue
+   * </pre>
+   * @param name The name of the attribute's element.
+   * @see SAXDriver#attribute
+   */
+  private void parseAttribute(String name)
+    throws Exception
+  {
+    String aname;
+    String type;
+    String value;
+    int flags = LIT_ATTRIBUTE |  LIT_ENTITY_REF;
+    
+    // Read the attribute name.
+    aname = readNmtoken(true);
+    type = getAttributeType(name, aname);
+    
+    // Parse '='
+    parseEq();
+
+    // Read the value, normalizing whitespace
+    // unless it is CDATA.
+    if (handler.stringInterning)
+      {
+        if (type == "CDATA" || type == null)
+          {
+            value = readLiteral(flags);
+          }
+        else
+          {
+            value = readLiteral(flags | LIT_NORMALIZE);
+          }
+      }
+    else
+      {
+        if (type.equals("CDATA") || type == null)
+          {
+            value = readLiteral(flags);
+          }
+        else
+          {
+            value = readLiteral(flags | LIT_NORMALIZE);
+          }
+      }
 
-       // WFC: no duplicate attributes
-       for (int i = 0; i < tagAttributePos; i++)
-           if (aname.equals (tagAttributes [i]))
-               error ("duplicate attribute", aname, null);
-
-       // Inform the handler about the
-       // attribute.
-       handler.attribute (aname, value, true);
-       dataBufferPos = 0;
-
-       // Note that the attribute has been
-       // specified.
-       if (tagAttributePos == tagAttributes.length) {
-           String newAttrib[] = new String [tagAttributes.length * 2];
-           System.arraycopy (tagAttributes, 0, newAttrib, 0, tagAttributePos);
-           tagAttributes = newAttrib;
-       }
-       tagAttributes [tagAttributePos++] = aname;
-    }
+    // WFC: no duplicate attributes
+    for (int i = 0; i < tagAttributePos; i++)
+      {
+        if (aname.equals(tagAttributes [i]))
+          {
+            error("duplicate attribute", aname, null);
+          }
+      }
 
+    // Inform the handler about the
+    // attribute.
+    handler.attribute(aname, value, true);
+    dataBufferPos = 0;
+    
+    // Note that the attribute has been
+    // specified.
+    if (tagAttributePos == tagAttributes.length)
+      {
+        String newAttrib[] = new String[tagAttributes.length * 2];
+        System.arraycopy(tagAttributes, 0, newAttrib, 0, tagAttributePos);
+        tagAttributes = newAttrib;
+      }
+    tagAttributes[tagAttributePos++] = aname;
+  }
 
-    /**
-     * Parse an equals sign surrounded by optional whitespace.
-     * <pre>
-     * [25] Eq ::= S? '=' S?
-     * </pre>
-     */
-    private void parseEq ()
+  /**
+   * Parse an equals sign surrounded by optional whitespace.
+   * <pre>
+   * [25] Eq ::= S? '=' S?
+   * </pre>
+   */
+  private void parseEq()
     throws SAXException, IOException
-    {
-       skipWhitespace ();
-       require ('=');
-       skipWhitespace ();
-    }
-
+  {
+    skipWhitespace();
+    require('=');
+    skipWhitespace();
+  }
 
-    /**
-     * Parse an end tag.
-     * <pre>
-     * [42] ETag ::= '</' Name S? '>'
-     * </pre>
-     * <p>NOTE: parseContent () chains to here, we already read the
-     * "&lt;/".
-     */
-    private void parseETag ()
+  /**
+   * Parse an end tag.
+   * <pre>
+   * [42] ETag ::= '</' Name S? '>'
+   * </pre>
+   * <p>NOTE: parseContent () chains to here, we already read the
+   * "&lt;/".
+   */
+  private void parseETag()
     throws Exception
-    {
-       require (currentElement);
-       skipWhitespace ();
-       require ('>');
-       handler.endElement (currentElement);
-       // not re-reporting any SAXException re bogus end tags,
-       // even though that diagnostic might be clearer ...
-    }
-
-
-    /**
-     * Parse the content of an element.
-     * <pre>
-     * [43] content ::= (element | CharData | Reference
-     *         | CDSect | PI | Comment)*
-     * [67] Reference ::= EntityRef | CharRef
-     * </pre>
-     * <p> NOTE: consumes ETtag.
-     */
-    private void parseContent ()
+  {
+    require(currentElement);
+    skipWhitespace();
+    require('>');
+    handler.endElement(currentElement);
+    // not re-reporting any SAXException re bogus end tags,
+    // even though that diagnostic might be clearer ...
+  }
+  
+  /**
+   * Parse the content of an element.
+   * <pre>
+   * [43] content ::= (element | CharData | Reference
+   *    | CDSect | PI | Comment)*
+   * [67] Reference ::= EntityRef | CharRef
+   * </pre>
+   * <p> NOTE: consumes ETtag.
+   */
+  private void parseContent()
     throws Exception
-    {
-       char c;
-
-       while (true) {
-           // consume characters (or ignorable whitspace) until delimiter
-           parseCharData ();
-
-           // Handle delimiters
-           c = readCh ();
-           switch (c) {
-
-           case '&':                   // Found "&"
-               c = readCh ();
-               if (c == '#') {
-                   parseCharRef ();
-               } else {
-                   unread (c);
-                   parseEntityRef (true);
-               }
-               isDirtyCurrentElement = true;
-               break;
-
-             case '<':                         // Found "<"
-               dataBufferFlush ();
-               c = readCh ();
-               switch (c) {
-                 case '!':                     // Found "<!"
-                   c = readCh ();
-                   switch (c) {
-                     case '-':                 // Found "<!-"
-                       require ('-');
-                       isDirtyCurrentElement = false;
-                       parseComment ();
-                       break;
-                     case '[':                 // Found "<!["
-                       isDirtyCurrentElement = false;
-                       require ("CDATA[");
-                       handler.startCDATA ();
-                       inCDATA = true;
-                       parseCDSect ();
-                       inCDATA = false;
-                       handler.endCDATA ();
-                       break;
-                     default:
-                       error ("expected comment or CDATA section", c, null);
-                       break;
-                   }
-                   break;
-
-                 case '?':             // Found "<?"
-                   isDirtyCurrentElement = false;
-                   parsePI ();
-                   break;
-
-                 case '/':             // Found "</"
-                   isDirtyCurrentElement = false;
-                   parseETag ();
-                   return;
-
-                 default:              // Found "<" followed by something else
-                   isDirtyCurrentElement = false;
-                   unread (c);
-                   parseElement (false);
-                   break;
-               }
-           }
-       }
-       
-    }
-
-
-    /**
-     * Parse an element type declaration.
-     * <pre>
-     * [45] elementdecl ::= '&lt;!ELEMENT' S Name S contentspec S? '&gt;'
-     * </pre>
-     * <p> NOTE: the '&lt;!ELEMENT' has already been read.
-     */
-    private void parseElementDecl ()
+  {
+    char c;
+    
+    while (true)
+      {
+        // consume characters (or ignorable whitspace) until delimiter
+        parseCharData();
+
+        // Handle delimiters
+        c = readCh();
+        switch (c)
+          {
+          case '&':       // Found "&"
+            c = readCh();
+            if (c == '#')
+              {
+                parseCharRef();
+              }
+            else
+              {
+                unread(c);
+                parseEntityRef(true);
+              }
+            isDirtyCurrentElement = true;
+            break;
+            
+          case '<':       // Found "<"
+            dataBufferFlush();
+            c = readCh();
+            switch (c)
+              {
+              case '!':       // Found "<!"
+                c = readCh();
+                switch (c)
+                  {
+                  case '-':     // Found "<!-"
+                    require('-');
+                    isDirtyCurrentElement = false;
+                    parseComment();
+                    break;
+                  case '[':     // Found "<!["
+                    isDirtyCurrentElement = false;
+                    require("CDATA[");
+                    handler.startCDATA();
+                    inCDATA = true;
+                    parseCDSect();
+                    inCDATA = false;
+                    handler.endCDATA();
+                    break;
+                  default:
+                    error("expected comment or CDATA section", c, null);
+                    break;
+                  }
+                break;
+              
+              case '?':     // Found "<?"
+                isDirtyCurrentElement = false;
+                parsePI();
+                break;
+                
+              case '/':     // Found "</"
+                isDirtyCurrentElement = false;
+                parseETag();
+                return;
+                
+              default:     // Found "<" followed by something else
+                isDirtyCurrentElement = false;
+                unread(c);
+                parseElement(false);
+                break;
+              }
+          }
+      }
+  }
+  
+  /**
+   * Parse an element type declaration.
+   * <pre>
+   * [45] elementdecl ::= '&lt;!ELEMENT' S Name S contentspec S? '&gt;'
+   * </pre>
+   * <p> NOTE: the '&lt;!ELEMENT' has already been read.
+   */
+  private void parseElementDecl()
     throws Exception
-    {
-       String name;
-
-       requireWhitespace ();
-       // Read the element type name.
-       name = readNmtoken (true);
-
-       requireWhitespace ();
-       // Read the content model.
-       parseContentspec (name);
-
-       skipWhitespace ();
-       require ('>');
-    }
-
+  {
+    String name;
+    
+    requireWhitespace();
+    // Read the element type name.
+    name = readNmtoken(true);
 
-    /**
-     * Content specification.
-     * <pre>
-     * [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | elements
-     * </pre>
-     */
-    private void parseContentspec (String name)
-    throws Exception
-    {
-// FIXME: move elementDecl() into setElement(), pass EMTPY/ANY ...
-       if (tryRead ("EMPTY")) {
-           setElement (name, CONTENT_EMPTY, null, null);
-           if (!skippedPE)
-               handler.getDeclHandler ().elementDecl (name, "EMPTY");
-           return;
-       } else if (tryRead ("ANY")) {
-           setElement (name, CONTENT_ANY, null, null);
-           if (!skippedPE)
-               handler.getDeclHandler ().elementDecl (name, "ANY");
-           return;
-       } else {
-           String      model;
-           char        saved []; 
-
-           require ('(');
-           saved = readBuffer;
-           dataBufferAppend ('(');
-           skipWhitespace ();
-           if (tryRead ("#PCDATA")) {
-               dataBufferAppend ("#PCDATA");
-               parseMixed (saved);
-               model = dataBufferToString ();
-               setElement (name, CONTENT_MIXED, model, null);
-           } else {
-               parseElements (saved);
-               model = dataBufferToString ();
-               setElement (name, CONTENT_ELEMENTS, model, null);
-           }
-           if (!skippedPE)
-               handler.getDeclHandler ().elementDecl (name, model);
-       }
-    }
+    requireWhitespace();
+    // Read the content model.
+    parseContentspec(name);
+    
+    skipWhitespace();
+    require('>');
+  }
 
-    /**
-     * Parse an element-content model.
-     * <pre>
-     * [47] elements ::= (choice | seq) ('?' | '*' | '+')?
-     * [49] choice ::= '(' S? cp (S? '|' S? cp)+ S? ')'
-     * [50] seq ::= '(' S? cp (S? ',' S? cp)* S? ')'
-     * </pre>
-     *
-     * <p> NOTE: the opening '(' and S have already been read.
-     *
-     * @param saved Buffer for entity that should have the terminal ')'
-     */
-    private void parseElements (char saved [])
+  /**
+   * Content specification.
+   * <pre>
+   * [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | elements
+   * </pre>
+   */
+  private void parseContentspec(String name)
     throws Exception
-    {
-       char c;
-       char sep;
-
-       // Parse the first content particle
-       skipWhitespace ();
-       parseCp ();
-
-       // Check for end or for a separator.
-       skipWhitespace ();
-       c = readCh ();
-       switch (c) {
-       case ')':
-           // VC: Proper Group/PE Nesting
-           if (readBuffer != saved)
-               handler.verror ("Illegal Group/PE nesting");
-
-           dataBufferAppend (')');
-           c = readCh ();
-           switch (c) {
-           case '*':
-           case '+':
-           case '?':
-               dataBufferAppend (c);
-               break;
-           default:
-               unread (c);
-           }
-           return;
-       case ',':                       // Register the separator.
-       case '|':
-           sep = c;
-           dataBufferAppend (c);
-           break;
-       default:
-           error ("bad separator in content model", c, null);
-           return;
-       }
-
-       // Parse the rest of the content model.
-       while (true) {
-           skipWhitespace ();
-           parseCp ();
-           skipWhitespace ();
-           c = readCh ();
-           if (c == ')') {
-               // VC: Proper Group/PE Nesting
-               if (readBuffer != saved)
-                   handler.verror ("Illegal Group/PE nesting");
-
-               dataBufferAppend (')');
-               break;
-           } else if (c != sep) {
-               error ("bad separator in content model", c, null);
-               return;
-           } else {
-               dataBufferAppend (c);
-           }
-       }
-
-       // Check for the occurrence indicator.
-       c = readCh ();
-       switch (c) {
-       case '?':
-       case '*':
-       case '+':
-           dataBufferAppend (c);
-           return;
-       default:
-           unread (c);
-           return;
-       }
-    }
-
-
-    /**
-     * Parse a content particle.
-     * <pre>
-     * [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
-     * </pre>
-     */
-    private void parseCp ()
+  {
+    // FIXME: move elementDecl() into setElement(), pass EMTPY/ANY ...
+    if (tryRead("EMPTY"))
+      {
+        setElement(name, CONTENT_EMPTY, null, null);
+        if (!skippedPE)
+          {
+            handler.getDeclHandler().elementDecl(name, "EMPTY");
+          }
+        return;
+      }
+    else if (tryRead("ANY"))
+      {
+        setElement(name, CONTENT_ANY, null, null);
+        if (!skippedPE)
+          {
+            handler.getDeclHandler().elementDecl(name, "ANY");
+          }
+        return;
+      }
+    else
+      {
+        String model;
+        char[] saved; 
+        
+        require('(');
+        saved = readBuffer;
+        dataBufferAppend('(');
+        skipWhitespace();
+        if (tryRead("#PCDATA"))
+          {
+            dataBufferAppend("#PCDATA");
+            parseMixed(saved);
+            model = dataBufferToString();
+            setElement(name, CONTENT_MIXED, model, null);
+          }
+        else
+          {
+            parseElements(saved);
+            model = dataBufferToString();
+            setElement(name, CONTENT_ELEMENTS, model, null);
+          }
+        if (!skippedPE)
+          {
+            handler.getDeclHandler().elementDecl(name, model);
+          }
+      }
+  }
+  
+  /**
+   * Parse an element-content model.
+   * <pre>
+   * [47] elements ::= (choice | seq) ('?' | '*' | '+')?
+   * [49] choice ::= '(' S? cp (S? '|' S? cp)+ S? ')'
+   * [50] seq ::= '(' S? cp (S? ',' S? cp)* S? ')'
+   * </pre>
+   *
+   * <p> NOTE: the opening '(' and S have already been read.
+   *
+   * @param saved Buffer for entity that should have the terminal ')'
+   */
+  private void parseElements(char[] saved)
     throws Exception
-    {
-       if (tryRead ('(')) {
-           dataBufferAppend ('(');
-           parseElements (readBuffer);
-       } else {
-           dataBufferAppend (readNmtoken (true));
-           char c = readCh ();
-           switch (c) {
-           case '?':
-           case '*':
-           case '+':
-               dataBufferAppend (c);
-               break;
-           default:
-               unread (c);
-               break;
-           }
-       }
-    }
-
-
-    /**
-     * Parse mixed content.
-     * <pre>
-     * [51] Mixed ::= '(' S? ( '#PCDATA' (S? '|' S? Name)*) S? ')*'
-     *       | '(' S? ('#PCDATA') S? ')'
-     * </pre>
-     *
-     * @param saved Buffer for entity that should have the terminal ')'
-     */
-    private void parseMixed (char saved [])
+  {
+    char c;
+    char sep;
+    
+    // Parse the first content particle
+    skipWhitespace();
+    parseCp();
+    
+    // Check for end or for a separator.
+    skipWhitespace();
+    c = readCh();
+    switch (c)
+      {
+      case ')':
+        // VC: Proper Group/PE Nesting
+        if (readBuffer != saved)
+          {
+            handler.verror("Illegal Group/PE nesting");
+          }
+        
+        dataBufferAppend(')');
+        c = readCh();
+        switch (c)
+          {
+          case '*':
+          case '+':
+          case '?':
+            dataBufferAppend(c);
+            break;
+          default:
+            unread(c);
+          }
+        return;
+      case ',':       // Register the separator.
+      case '|':
+        sep = c;
+        dataBufferAppend(c);
+        break;
+      default:
+        error("bad separator in content model", c, null);
+        return;
+      }
+    
+    // Parse the rest of the content model.
+    while (true)
+      {
+        skipWhitespace();
+        parseCp();
+        skipWhitespace();
+        c = readCh();
+        if (c == ')')
+          {
+            // VC: Proper Group/PE Nesting
+            if (readBuffer != saved)
+              {
+                handler.verror("Illegal Group/PE nesting");
+              }
+            
+            dataBufferAppend(')');
+            break;
+          }
+        else if (c != sep)
+          {
+            error("bad separator in content model", c, null);
+            return;
+          }
+        else
+          {
+            dataBufferAppend(c);
+          }
+      }
+    
+    // Check for the occurrence indicator.
+    c = readCh();
+    switch (c)
+      {
+      case '?':
+      case '*':
+      case '+':
+        dataBufferAppend(c);
+        return;
+      default:
+        unread(c);
+        return;
+      }
+  }
+   
+  /**
+   * Parse a content particle.
+   * <pre>
+   * [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
+   * </pre>
+   */
+  private void parseCp()
     throws Exception
-    {
-       // Check for PCDATA alone.
-       skipWhitespace ();
-       if (tryRead (')')) {
-           // VC: Proper Group/PE Nesting
-           if (readBuffer != saved)
-               handler.verror ("Illegal Group/PE nesting");
-
-           dataBufferAppend (")*");
-           tryRead ('*');
-           return;
-       }
-
-       // Parse mixed content.
-       skipWhitespace ();
-       while (!tryRead (")")) {
-           require ('|');
-           dataBufferAppend ('|');
-           skipWhitespace ();
-           dataBufferAppend (readNmtoken (true));
-           skipWhitespace ();
-       }
-
-       // VC: Proper Group/PE Nesting
-       if (readBuffer != saved)
-           handler.verror ("Illegal Group/PE nesting");
-
-       require ('*');
-       dataBufferAppend (")*");
-    }
-
+  {
+    if (tryRead('('))
+      {
+        dataBufferAppend('(');
+        parseElements(readBuffer);
+      }
+    else
+      {
+        dataBufferAppend(readNmtoken(true));
+        char c = readCh();
+        switch (c)
+          {
+          case '?':
+          case '*':
+          case '+':
+            dataBufferAppend(c);
+            break;
+          default:
+            unread(c);
+            break;
+          }
+      }
+  }
 
-    /**
-     * Parse an attribute list declaration.
-     * <pre>
-     * [52] AttlistDecl ::= '&lt;!ATTLIST' S Name AttDef* S? '&gt;'
-     * </pre>
-     * <p>NOTE: the '&lt;!ATTLIST' has already been read.
-     */
-    private void parseAttlistDecl ()
+  /**
+   * Parse mixed content.
+   * <pre>
+   * [51] Mixed ::= '(' S? ( '#PCDATA' (S? '|' S? Name)*) S? ')*'
+   *        | '(' S? ('#PCDATA') S? ')'
+   * </pre>
+   *
+   * @param saved Buffer for entity that should have the terminal ')'
+   */
+  private void parseMixed(char[] saved)
     throws Exception
-    {
-       String elementName;
-
-       requireWhitespace ();
-       elementName = readNmtoken (true);
-       boolean white = tryWhitespace ();
-       while (!tryRead ('>')) {
-           if (!white)
-               error ("whitespace required before attribute definition");
-           parseAttDef (elementName);
-           white = tryWhitespace ();
-       }
-    }
-
-
-    /**
-     * Parse a single attribute definition.
-     * <pre>
-     * [53] AttDef ::= S Name S AttType S DefaultDecl
-     * </pre>
-     */
-    private void parseAttDef (String elementName)
+  {
+    // Check for PCDATA alone.
+    skipWhitespace();
+    if (tryRead(')'))
+      {
+        // VC: Proper Group/PE Nesting
+        if (readBuffer != saved)
+          {
+            handler.verror("Illegal Group/PE nesting");
+          }
+        
+        dataBufferAppend(")*");
+        tryRead('*');
+        return;
+      }
+    
+    // Parse mixed content.
+    skipWhitespace();
+    while (!tryRead(")"))
+      {
+        require('|');
+        dataBufferAppend('|');
+        skipWhitespace();
+        dataBufferAppend(readNmtoken(true));
+        skipWhitespace();
+      }
+    
+    // VC: Proper Group/PE Nesting
+    if (readBuffer != saved)
+      {
+        handler.verror("Illegal Group/PE nesting");
+      }
+    
+    require('*');
+    dataBufferAppend(")*");
+  }
+  
+  /**
+   * Parse an attribute list declaration.
+   * <pre>
+   * [52] AttlistDecl ::= '&lt;!ATTLIST' S Name AttDef* S? '&gt;'
+   * </pre>
+   * <p>NOTE: the '&lt;!ATTLIST' has already been read.
+   */
+  private void parseAttlistDecl()
     throws Exception
-    {
-       String name;
-       String type;
-       String enumer = null;
-
-       // Read the attribute name.
-       name = readNmtoken (true);
-
-       // Read the attribute type.
-       requireWhitespace ();
-       type = readAttType ();
-
-       // Get the string of enumerated values if necessary.
-  if (handler.getFeature (SAXDriver.FEATURE + "string-interning")) {
-    if ("ENUMERATION" == type || "NOTATION" == type)
-           enumer = dataBufferToString ();
-  } else {
-    if ("ENUMERATION".equals(type) || "NOTATION".equals(type))
-           enumer = dataBufferToString ();
+  {
+    String elementName;
+    
+    requireWhitespace();
+    elementName = readNmtoken(true);
+    boolean white = tryWhitespace();
+    while (!tryRead('>'))
+      {
+        if (!white)
+          {
+            error("whitespace required before attribute definition");
+          }
+        parseAttDef(elementName);
+        white = tryWhitespace();
+      }
   }
+  
+  /**
+   * Parse a single attribute definition.
+   * <pre>
+   * [53] AttDef ::= S Name S AttType S DefaultDecl
+   * </pre>
+   */
+  private void parseAttDef(String elementName)
+    throws Exception
+  {
+    String name;
+    String type;
+    String enumer = null;
+    
+    // Read the attribute name.
+    name = readNmtoken(true);
 
-       // Read the default value.
-       requireWhitespace ();
-       parseDefault (elementName, name, type, enumer);
-    }
+    // Read the attribute type.
+    requireWhitespace();
+    type = readAttType();
 
+    // Get the string of enumerated values if necessary.
+    if (handler.stringInterning)
+      {
+        if ("ENUMERATION" == type || "NOTATION" == type)
+          {
+            enumer = dataBufferToString();
+          }
+      }
+    else
+      {
+        if ("ENUMERATION".equals(type) || "NOTATION".equals(type))
+          {
+            enumer = dataBufferToString();
+          }
+      }
+    
+    // Read the default value.
+    requireWhitespace();
+    parseDefault(elementName, name, type, enumer);
+  }
 
   /**
    * Parse the attribute type.
@@ -1598,229 +1926,284 @@ loop:
    * [54] AttType ::= StringType | TokenizedType | EnumeratedType
    * [55] StringType ::= 'CDATA'
    * [56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY'
-   *           | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'
+   *    | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'
    * [57] EnumeratedType ::= NotationType | Enumeration
    * </pre>
    */
-  private String readAttType ()
+  private String readAttType()
     throws Exception
   {
-    if (tryRead ('(')) {
-           parseEnumeration (false);
-           return "ENUMERATION";
-    } else {
-           String typeString = readNmtoken (true);
-      if (handler.getFeature (SAXDriver.FEATURE + "string-interning")) {
-        if ("NOTATION" == typeString) {
-          parseNotationType ();
-          return typeString;
-        } else if ("CDATA" == typeString
-                   || "ID" == typeString
-                   || "IDREF" == typeString
-                   || "IDREFS" == typeString
-                   || "ENTITY" == typeString
-                   || "ENTITIES" == typeString
-                   || "NMTOKEN" == typeString
-                   || "NMTOKENS" == typeString)
-          return typeString;
-      } else {
-        if ("NOTATION".equals(typeString)) {
-          parseNotationType ();
-          return typeString;
-        } else if ("CDATA".equals(typeString)
-                   || "ID".equals(typeString)
-                   || "IDREF".equals(typeString)
-                   || "IDREFS".equals(typeString)
-                   || "ENTITY".equals(typeString)
-                   || "ENTITIES".equals(typeString)
-                   || "NMTOKEN".equals(typeString)
-                   || "NMTOKENS".equals(typeString))
-          return typeString;
-      }
-           error ("illegal attribute type", typeString, null);
-           return null;
-    }
+    if (tryRead('('))
+      {
+        parseEnumeration(false);
+        return "ENUMERATION";
+      }
+    else
+      {
+        String typeString = readNmtoken(true);
+        if (handler.stringInterning)
+          {
+            if ("NOTATION" == typeString)
+              {
+                parseNotationType();
+                return typeString;
+              }
+            else if ("CDATA" == typeString
+                     || "ID" == typeString
+                     || "IDREF" == typeString
+                     || "IDREFS" == typeString
+                     || "ENTITY" == typeString
+                     || "ENTITIES" == typeString
+                     || "NMTOKEN" == typeString
+                     || "NMTOKENS" == typeString)
+              {
+                return typeString;
+              }
+          }
+        else
+          {
+            if ("NOTATION".equals(typeString))
+              {
+                parseNotationType();
+                return typeString;
+              }
+            else if ("CDATA".equals(typeString)
+                     || "ID".equals(typeString)
+                     || "IDREF".equals(typeString)
+                     || "IDREFS".equals(typeString)
+                     || "ENTITY".equals(typeString)
+                     || "ENTITIES".equals(typeString)
+                     || "NMTOKEN".equals(typeString)
+                     || "NMTOKENS".equals(typeString))
+              {
+                return typeString;
+              }
+          }
+        error("illegal attribute type", typeString, null);
+        return null;
+      }
   }
   
-
-    /**
-     * Parse an enumeration.
-     * <pre>
-     * [59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
-     * </pre>
-     * <p>NOTE: the '(' has already been read.
-     */
-    private void parseEnumeration (boolean isNames)
+  /**
+   * Parse an enumeration.
+   * <pre>
+   * [59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
+   * </pre>
+   * <p>NOTE: the '(' has already been read.
+   */
+  private void parseEnumeration(boolean isNames)
     throws Exception
-    {
-       dataBufferAppend ('(');
-
-       // Read the first token.
-       skipWhitespace ();
-       dataBufferAppend (readNmtoken (isNames));
-       // Read the remaining tokens.
-       skipWhitespace ();
-       while (!tryRead (')')) {
-           require ('|');
-           dataBufferAppend ('|');
-           skipWhitespace ();
-           dataBufferAppend (readNmtoken (isNames));
-           skipWhitespace ();
-       }
-       dataBufferAppend (')');
-    }
-
+  {
+    dataBufferAppend('(');
+
+    // Read the first token.
+    skipWhitespace();
+    dataBufferAppend(readNmtoken(isNames));
+    // Read the remaining tokens.
+    skipWhitespace();
+    while (!tryRead(')'))
+      {
+        require('|');
+        dataBufferAppend('|');
+        skipWhitespace();
+        dataBufferAppend(readNmtoken (isNames));
+        skipWhitespace();
+      }
+    dataBufferAppend(')');
+  }
 
-    /**
-     * Parse a notation type for an attribute.
-     * <pre>
-     * [58] NotationType ::= 'NOTATION' S '(' S? NameNtoks
-     *         (S? '|' S? name)* S? ')'
-     * </pre>
-     * <p>NOTE: the 'NOTATION' has already been read
-     */
-    private void parseNotationType ()
+  /**
+   * Parse a notation type for an attribute.
+   * <pre>
+   * [58] NotationType ::= 'NOTATION' S '(' S? NameNtoks
+   *    (S? '|' S? name)* S? ')'
+   * </pre>
+   * <p>NOTE: the 'NOTATION' has already been read
+   */
+  private void parseNotationType()
     throws Exception
-    {
-       requireWhitespace ();
-       require ('(');
-
-       parseEnumeration (true);
-    }
-
-
-    /**
-     * Parse the default value for an attribute.
-     * <pre>
-     * [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED'
-     *         | (('#FIXED' S)? AttValue)
-     * </pre>
-     */
-    private void parseDefault (
-       String elementName,
-       String name,
-       String type,
-       String enumer
-    ) throws Exception
-    {
-       int     valueType = ATTRIBUTE_DEFAULT_SPECIFIED;
-       String  value = null;
-       int     flags = LIT_ATTRIBUTE;
-       boolean saved = expandPE;
-       String  defaultType = null;
-
-       // LIT_ATTRIBUTE forces '<' checks now (ASAP) and turns whitespace
-       // chars to spaces (doesn't matter when that's done if it doesn't
-       // interfere with char refs expanding to whitespace).
-
-       if (!skippedPE) {
-    flags |= LIT_ENTITY_REF;
-    if (handler.getFeature (SAXDriver.FEATURE + "string-interning")) {
-           if ("CDATA" != type)
-        flags |= LIT_NORMALIZE;
-    } else {
-           if (!"CDATA".equals(type))
-        flags |= LIT_NORMALIZE;
-    }
-       }
-
-       expandPE = false;
-       if (tryRead ('#')) {
-           if (tryRead ("FIXED")) {
-               defaultType = "#FIXED";
-               valueType = ATTRIBUTE_DEFAULT_FIXED;
-               requireWhitespace ();
-               value = readLiteral (flags);
-           } else if (tryRead ("REQUIRED")) {
-               defaultType = "#REQUIRED";
-               valueType = ATTRIBUTE_DEFAULT_REQUIRED;
-           } else if (tryRead ("IMPLIED")) {
-               defaultType = "#IMPLIED";
-               valueType = ATTRIBUTE_DEFAULT_IMPLIED;
-           } else {
-               error ("illegal keyword for attribute default value");
-           }
-       } else
-           value = readLiteral (flags);
-       expandPE = saved;
-       setAttribute (elementName, name, type, enumer, value, valueType);
-  if (handler.getFeature (SAXDriver.FEATURE + "string-interning")) {
-    if ("ENUMERATION" == type)
-           type = enumer;
-    else if ("NOTATION" == type)
-           type = "NOTATION " + enumer;
-  } else {
-    if ("ENUMERATION".equals(type))
-           type = enumer;
-    else if ("NOTATION".equals(type))
-           type = "NOTATION " + enumer;
+  {
+    requireWhitespace();
+    require('(');
+    
+    parseEnumeration(true);
   }
-       if (!skippedPE) handler.getDeclHandler ()
-           .attributeDecl (elementName, name, type, defaultType, value);
-    }
 
-
-    /**
-     * Parse a conditional section.
-     * <pre>
-     * [61] conditionalSect ::= includeSect || ignoreSect
-     * [62] includeSect ::= '&lt;![' S? 'INCLUDE' S? '['
-     *         extSubsetDecl ']]&gt;'
-     * [63] ignoreSect ::= '&lt;![' S? 'IGNORE' S? '['
-     *         ignoreSectContents* ']]&gt;'
-     * [64] ignoreSectContents ::= Ignore
-     *         ('&lt;![' ignoreSectContents* ']]&gt;' Ignore )*
-     * [65] Ignore ::= Char* - (Char* ( '&lt;![' | ']]&gt;') Char* )
-     * </pre>
-     * <p> NOTE: the '&gt;![' has already been read.
-     */
-    private void parseConditionalSect (char saved [])
+  /**
+   * Parse the default value for an attribute.
+   * <pre>
+   * [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED'
+   *    | (('#FIXED' S)? AttValue)
+   * </pre>
+   */
+  private void parseDefault(String elementName, String name,
+                            String type, String enumer)
     throws Exception
-    {
-       skipWhitespace ();
-       if (tryRead ("INCLUDE")) {
-           skipWhitespace ();
-           require ('[');
-           // VC: Proper Conditional Section/PE Nesting
-           if (readBuffer != saved)
-               handler.verror ("Illegal Conditional Section/PE nesting");
-           skipWhitespace ();
-           while (!tryRead ("]]>")) {
-               parseMarkupdecl ();
-               skipWhitespace ();
-           }
-       } else if (tryRead ("IGNORE")) {
-           skipWhitespace ();
-           require ('[');
-           // VC: Proper Conditional Section/PE Nesting
-           if (readBuffer != saved)
-               handler.verror ("Illegal Conditional Section/PE nesting");
-           int nesting = 1;
-           char c;
-           expandPE = false;
-           for (int nest = 1; nest > 0;) {
-               c = readCh ();
-               switch (c) {
-               case '<':
-                   if (tryRead ("![")) {
-                       nest++;
-                   }
-               case ']':
-                   if (tryRead ("]>")) {
-                       nest--;
-                   }
-               }
-           }
-           expandPE = true;
-       } else {
-           error ("conditional section must begin with INCLUDE or IGNORE");
-       }
-    }
-
-  private void parseCharRef ()
+  {
+    int valueType = ATTRIBUTE_DEFAULT_SPECIFIED;
+    String value = null;
+    int flags = LIT_ATTRIBUTE;
+    boolean saved = expandPE;
+    String defaultType = null;
+    
+    // LIT_ATTRIBUTE forces '<' checks now (ASAP) and turns whitespace
+    // chars to spaces (doesn't matter when that's done if it doesn't
+    // interfere with char refs expanding to whitespace).
+    
+    if (!skippedPE)
+      {
+        flags |= LIT_ENTITY_REF;
+        if (handler.stringInterning)
+          {
+            if ("CDATA" != type)
+              {
+                flags |= LIT_NORMALIZE;
+              }
+          }
+        else
+          {
+            if (!"CDATA".equals(type))
+              {
+                flags |= LIT_NORMALIZE;
+              }
+          }
+      }
+    
+    expandPE = false;
+    if (tryRead('#'))
+      {
+        if (tryRead("FIXED"))
+          {
+            defaultType = "#FIXED";
+            valueType = ATTRIBUTE_DEFAULT_FIXED;
+            requireWhitespace();
+            value = readLiteral(flags);
+          }
+        else if (tryRead("REQUIRED"))
+          {
+            defaultType = "#REQUIRED";
+            valueType = ATTRIBUTE_DEFAULT_REQUIRED;
+          }
+        else if (tryRead("IMPLIED"))
+          {
+            defaultType = "#IMPLIED";
+            valueType = ATTRIBUTE_DEFAULT_IMPLIED;
+          }
+        else
+          {
+            error("illegal keyword for attribute default value");
+          }
+      }
+    else
+      {
+        value = readLiteral(flags);
+      }
+    expandPE = saved;
+    setAttribute(elementName, name, type, enumer, value, valueType);
+    if (handler.stringInterning)
+      {
+        if ("ENUMERATION" == type)
+          {
+            type = enumer;
+          }
+        else if ("NOTATION" == type)
+          {
+            type = "NOTATION " + enumer;
+          }
+      }
+    else
+      {
+        if ("ENUMERATION".equals(type))
+          {
+            type = enumer;
+          }
+        else if ("NOTATION".equals(type))
+          {
+            type = "NOTATION " + enumer;
+          }
+      }
+    if (!skippedPE)
+      {
+        handler.getDeclHandler().attributeDecl(elementName, name, type,
+                                               defaultType, value);
+      }
+  }
+  
+  /**
+   * Parse a conditional section.
+   * <pre>
+   * [61] conditionalSect ::= includeSect || ignoreSect
+   * [62] includeSect ::= '&lt;![' S? 'INCLUDE' S? '['
+   *    extSubsetDecl ']]&gt;'
+   * [63] ignoreSect ::= '&lt;![' S? 'IGNORE' S? '['
+   *    ignoreSectContents* ']]&gt;'
+   * [64] ignoreSectContents ::= Ignore
+   *    ('&lt;![' ignoreSectContents* ']]&gt;' Ignore )*
+   * [65] Ignore ::= Char* - (Char* ( '&lt;![' | ']]&gt;') Char* )
+   * </pre>
+   * <p> NOTE: the '&gt;![' has already been read.
+   */
+  private void parseConditionalSect(char[] saved)
+    throws Exception
+  {
+    skipWhitespace();
+    if (tryRead("INCLUDE"))
+      {
+        skipWhitespace();
+        require('[');
+        // VC: Proper Conditional Section/PE Nesting
+        if (readBuffer != saved)
+          {
+            handler.verror("Illegal Conditional Section/PE nesting");
+          }
+        skipWhitespace();
+        while (!tryRead("]]>"))
+          {
+            parseMarkupdecl();
+            skipWhitespace();
+          }
+      }
+    else if (tryRead("IGNORE"))
+      {
+        skipWhitespace();
+        require('[');
+        // VC: Proper Conditional Section/PE Nesting
+        if (readBuffer != saved)
+          {
+            handler.verror("Illegal Conditional Section/PE nesting");
+          }
+        int nesting = 1;
+        char c;
+        expandPE = false;
+        for (int nest = 1; nest > 0; )
+          {
+            c = readCh();
+            switch (c)
+              {
+              case '<':
+                if (tryRead("!["))
+                  {
+                    nest++;
+                  }
+              case ']':
+                if (tryRead("]>"))
+                  {
+                    nest--;
+                  }
+              }
+          }
+        expandPE = true;
+      }
+    else
+      {
+        error("conditional section must begin with INCLUDE or IGNORE");
+      }
+  }
+  
+  private void parseCharRef()
     throws SAXException, IOException
   {
-    parseCharRef (true /* do flushDataBuffer by default */);
+    parseCharRef(true /* do flushDataBuffer by default */);
   }
 
   /**
@@ -1830,1485 +2213,1717 @@ loop:
    * </pre>
    * <p>NOTE: the '&#' has already been read.
    */
-  private void tryReadCharRef ()
-  throws SAXException, IOException
+  private void tryReadCharRef()
+    throws SAXException, IOException
   {
-       int value = 0;
-       char c;
-
-       if (tryRead ('x')) {
+    int value = 0;
+    char c;
+    
+    if (tryRead('x'))
+      {
 loop1:
-           while (true) {
-               c = readCh ();
-               int n;
-               switch (c) {
-               case '0': case '1': case '2': case '3': case '4':
-               case '5': case '6': case '7': case '8': case '9':
-                   n = c - '0';
-                   break;
-               case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-                   n = (c - 'a') + 10;
-                   break;
-               case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-                   n = (c - 'A') + 10;
-                   break;
-               case ';':
-                   break loop1;
-               default:
-                   error ("illegal character in character reference", c, null);
-                   break loop1;
-               }
-               value *= 16;
-               value += n;
-           }
-       } else {
+        while (true)
+          {
+            c = readCh();
+            if (c == ';')
+              {
+                break loop1;
+              }
+            else
+              {
+                int n = Character.digit(c, 16);
+                if (n == -1)
+                  {
+                    error("illegal character in character reference", c, null);
+                    break loop1;
+                  }
+                value *= 16;
+                value += n;
+              }
+          }
+      }
+    else
+      {
 loop2:
-           while (true) {
-               c = readCh ();
-               switch (c) {
-               case '0': case '1': case '2': case '3': case '4':
-               case '5': case '6': case '7': case '8': case '9':
-                   value *= 10;
-                   value += c - '0';
-                   break;
-               case ';':
-                   break loop2;
-               default:
-                   error ("illegal character in character reference", c, null);
-                   break loop2;
-               }
-           }
-       }
-
-       // check for character refs being legal XML
-       if ((value < 0x0020
-               && ! (value == '\n' || value == '\t' || value == '\r'))
-               || (value >= 0xD800 && value <= 0xDFFF)
-               || value == 0xFFFE || value == 0xFFFF
-               || value > 0x0010ffff)
-           error ("illegal XML character reference U+"
-                   + Integer.toHexString (value));
-
-       // Check for surrogates: 00000000 0000xxxx yyyyyyyy zzzzzzzz
-       //  (1101|10xx|xxyy|yyyy + 1101|11yy|zzzz|zzzz:
-       if (value > 0x0010ffff) {
-           // too big for surrogate
-           error ("character reference " + value + " is too large for UTF-16",
-                  new Integer (value).toString (), null);
-       }
-
+        while (true)
+          {
+            c = readCh();
+            if (c == ';')
+              {
+                break loop2;
+              }
+            else
+              {
+                int n = Character.digit(c, 10);
+                if (n == -1)
+                  {
+                    error("illegal character in character reference", c, null);
+                    break loop2;
+                  }
+                value *= 10;
+                value += n;
+              }
+          }
+      }
+    
+    // check for character refs being legal XML
+    if ((value < 0x0020
+         && ! (value == '\n' || value == '\t' || value == '\r'))
+        || (value >= 0xD800 && value <= 0xDFFF)
+        || value == 0xFFFE || value == 0xFFFF
+        || value > 0x0010ffff)
+      {
+        error("illegal XML character reference U+"
+              + Integer.toHexString(value));
+      }
+    
+    // Check for surrogates: 00000000 0000xxxx yyyyyyyy zzzzzzzz
+    //  (1101|10xx|xxyy|yyyy + 1101|11yy|zzzz|zzzz:
+    if (value > 0x0010ffff)
+      {
+        // too big for surrogate
+        error("character reference " + value + " is too large for UTF-16",
+              new Integer(value).toString(), null);
+      }
+    
   }
   
-    /**
-     * Read and interpret a character reference.
-     * <pre>
-     * [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
-     * </pre>
-     * <p>NOTE: the '&#' has already been read.
-     */
-    private void parseCharRef (boolean doFlush)
+  /**
+   * Read and interpret a character reference.
+   * <pre>
+   * [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
+   * </pre>
+   * <p>NOTE: the '&#' has already been read.
+   */
+  private void parseCharRef(boolean doFlush)
     throws SAXException, IOException
-    {
-       int value = 0;
-       char c;
-
-       if (tryRead ('x')) {
+  {
+    int value = 0;
+    char c;
+    
+    if (tryRead('x'))
+      {
 loop1:
-           while (true) {
-               c = readCh ();
-               int n;
-               switch (c) {
-               case '0': case '1': case '2': case '3': case '4':
-               case '5': case '6': case '7': case '8': case '9':
-                   n = c - '0';
-                   break;
-               case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-                   n = (c - 'a') + 10;
-                   break;
-               case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-                   n = (c - 'A') + 10;
-                   break;
-               case ';':
-                   break loop1;
-               default:
-                   error ("illegal character in character reference", c, null);
-                   break loop1;
-               }
-               value *= 16;
-               value += n;
-           }
-       } else {
+        while (true)
+          {
+            c = readCh();
+            if (c == ';')
+              {
+                break loop1;
+              }
+            else
+              {
+                int n = Character.digit(c, 16);
+                if (n == -1)
+                  {
+                    error("illegal character in character reference", c, null);
+                    break loop1;
+                  }
+                value *= 16;
+                value += n;
+              }
+          }
+      }
+    else
+      {
 loop2:
-           while (true) {
-               c = readCh ();
-               switch (c) {
-               case '0': case '1': case '2': case '3': case '4':
-               case '5': case '6': case '7': case '8': case '9':
-                   value *= 10;
-                   value += c - '0';
-                   break;
-               case ';':
-                   break loop2;
-               default:
-                   error ("illegal character in character reference", c, null);
-                   break loop2;
-               }
-           }
-       }
-
-       // check for character refs being legal XML
-       if ((value < 0x0020
-               && ! (value == '\n' || value == '\t' || value == '\r'))
-               || (value >= 0xD800 && value <= 0xDFFF)
-               || value == 0xFFFE || value == 0xFFFF
-               || value > 0x0010ffff)
-           error ("illegal XML character reference U+"
-                   + Integer.toHexString (value));
-
-       // Check for surrogates: 00000000 0000xxxx yyyyyyyy zzzzzzzz
-       //  (1101|10xx|xxyy|yyyy + 1101|11yy|zzzz|zzzz:
-       if (value <= 0x0000ffff) {
-           // no surrogates needed
-           dataBufferAppend ((char) value);
-       } else if (value <= 0x0010ffff) {
-           value -= 0x10000;
-           // > 16 bits, surrogate needed
-           dataBufferAppend ((char) (0xd800 | (value >> 10)));
-           dataBufferAppend ((char) (0xdc00 | (value & 0x0003ff)));
-       } else {
-           // too big for surrogate
-           error ("character reference " + value + " is too large for UTF-16",
-                  new Integer (value).toString (), null);
-       }
-  if (doFlush) dataBufferFlush ();
-    }
-
-
-    /**
-     * Parse and expand an entity reference.
-     * <pre>
-     * [68] EntityRef ::= '&' Name ';'
-     * </pre>
-     * <p>NOTE: the '&amp;' has already been read.
-     * @param externalAllowed External entities are allowed here.
-     */
-    private void parseEntityRef (boolean externalAllowed)
+        while (true)
+          {
+            c = readCh();
+            if (c == ';')
+              {
+                break loop2;
+              }
+            else
+              {
+                int n = Character.digit(c, 10);
+                if (n == -1)
+                  {
+                    error("illegal character in character reference", c, null);
+                    break loop2;
+                  }
+                value *= 10;
+                value += c - '0';
+              }
+          }
+      }
+    
+    // check for character refs being legal XML
+    if ((value < 0x0020
+         && ! (value == '\n' || value == '\t' || value == '\r'))
+        || (value >= 0xD800 && value <= 0xDFFF)
+        || value == 0xFFFE || value == 0xFFFF
+        || value > 0x0010ffff)
+      {
+        error("illegal XML character reference U+"
+              + Integer.toHexString(value));
+      }
+    
+    // Check for surrogates: 00000000 0000xxxx yyyyyyyy zzzzzzzz
+    //  (1101|10xx|xxyy|yyyy + 1101|11yy|zzzz|zzzz:
+    if (value <= 0x0000ffff)
+      {
+        // no surrogates needed
+        dataBufferAppend((char) value);
+      }
+    else if (value <= 0x0010ffff)
+      {
+        value -= 0x10000;
+        // > 16 bits, surrogate needed
+        dataBufferAppend((char) (0xd800 | (value >> 10)));
+        dataBufferAppend((char) (0xdc00 | (value & 0x0003ff)));
+      }
+    else
+      {
+        // too big for surrogate
+        error("character reference " + value + " is too large for UTF-16",
+              new Integer(value).toString(), null);
+      }
+    if (doFlush)
+      {
+        dataBufferFlush();
+      }
+  }
+  
+  /**
+   * Parse and expand an entity reference.
+   * <pre>
+   * [68] EntityRef ::= '&' Name ';'
+   * </pre>
+   * <p>NOTE: the '&amp;' has already been read.
+   * @param externalAllowed External entities are allowed here.
+   */
+  private void parseEntityRef(boolean externalAllowed)
     throws SAXException, IOException
-    {
-       String name;
-
-       name = readNmtoken (true);
-       require (';');
-       switch (getEntityType (name)) {
-       case ENTITY_UNDECLARED:
-           // NOTE:  XML REC describes amazingly convoluted handling for
-           // this case.  Nothing as meaningful as being a WFness error
-           // unless the processor might _legitimately_ not have seen a
-           // declaration ... which is what this implements.
-           String      message;
-           
-           message = "reference to undeclared general entity " + name;
-           if (skippedPE && !docIsStandalone) {
-               handler.verror (message);
-               // we don't know this entity, and it might be external...
-               if (externalAllowed)
-                   handler.skippedEntity (name);
-           } else
-               error (message);
-           break;
-       case ENTITY_INTERNAL:
-            pushString (name, getEntityValue (name));
-           
-           //workaround for possible input pop before marking
-            //the buffer reading position      
-            char t = readCh ();
-            unread (t);
-            int bufferPosMark = readBufferPos;
-           
-            int end = readBufferPos + getEntityValue (name).length();
-            for(int k = readBufferPos; k < end; k++){
-                   t = readCh ();
-                   if (t == '&'){
-                       t = readCh ();   
-                       if (t  == '#'){ 
-                          //try to match a character ref
-                          tryReadCharRef ();
-                          
-                          //everything has been read
-                          if (readBufferPos >= end)
-                             break;
-                          k = readBufferPos;
-                          continue;
-                       }
-                       else if (Character.isLetter(t)){
-                          //looks like an entity ref
-                          unread (t);
-                          readNmtoken (true);
-                          require (';');
-                       
-                          //everything has been read
-                          if (readBufferPos >= end)
-                             break;
-                          k = readBufferPos;
-                          continue;
-                       }
-                       error(" malformed entity reference");
-                   }
-                  
+  {
+    String name;
+    
+    name = readNmtoken(true);
+    require(';');
+    switch (getEntityType(name))
+      {
+      case ENTITY_UNDECLARED:
+        // NOTE:  XML REC describes amazingly convoluted handling for
+        // this case.  Nothing as meaningful as being a WFness error
+        // unless the processor might _legitimately_ not have seen a
+        // declaration ... which is what this implements.
+        String message;
+        
+        message = "reference to undeclared general entity " + name;
+        if (skippedPE && !docIsStandalone)
+          {
+            handler.verror(message);
+            // we don't know this entity, and it might be external...
+            if (externalAllowed)
+              {
+                handler.skippedEntity(name);
+              }
+          }
+        else
+          {
+            error(message);
+          }
+        break;
+      case ENTITY_INTERNAL:
+          pushString(name, getEntityValue(name));
+          
+          //workaround for possible input pop before marking
+          //the buffer reading position  
+          char t = readCh();
+          unread(t);
+          int bufferPosMark = readBufferPos;
+          
+          int end = readBufferPos + getEntityValue(name).length();
+          for (int k = readBufferPos; k < end; k++)
+            {
+              t = readCh();
+              if (t == '&')
+                {
+                  t = readCh();   
+                  if (t  == '#')
+                    { 
+                      //try to match a character ref
+                      tryReadCharRef();
+                
+                      //everything has been read
+                      if (readBufferPos >= end)
+                        {
+                          break;
+                        }
+                      k = readBufferPos;
+                      continue;
+                    }
+                  else if (Character.isLetter(t))
+                    {
+                      //looks like an entity ref
+                      unread(t);
+                      readNmtoken(true);
+                      require(';');
+                      
+                      //everything has been read
+                      if (readBufferPos >= end)
+                        {
+                          break;
+                        }
+                      k = readBufferPos;
+                      continue;
+                    }
+                  error(" malformed entity reference");
+                }
+              
             }
-            readBufferPos = bufferPosMark;
-           break;
-       case ENTITY_TEXT:
-           if (externalAllowed) {
-               pushURL (false, name, getEntityIds (name),
-                       null, null, null, true);
-           } else {
-               error ("reference to external entity in attribute value.",
-                       name, null);
-           }
-           break;
-       case ENTITY_NDATA:
-           if (externalAllowed) {
-               error ("unparsed entity reference in content", name, null);
-           } else {
-               error ("reference to external entity in attribute value.",
-                       name, null);
-           }
-           break;
-       default:
-           throw new RuntimeException ();
-       }
-    }
-
-
-    /**
-     * Parse and expand a parameter entity reference.
-     * <pre>
-     * [69] PEReference ::= '%' Name ';'
-     * </pre>
-     * <p>NOTE: the '%' has already been read.
-     */
-    private void parsePEReference ()
+          readBufferPos = bufferPosMark;
+          break;
+      case ENTITY_TEXT:
+          if (externalAllowed)
+            {
+              pushURL(false, name, getEntityIds(name),
+                      null, null, null, true);
+            }
+          else
+            {
+              error("reference to external entity in attribute value.",
+                    name, null);
+            }
+          break;
+      case ENTITY_NDATA:
+          if (externalAllowed)
+            {
+              error("unparsed entity reference in content", name, null);
+            }
+          else
+            {
+              error("reference to external entity in attribute value.",
+                    name, null);
+            }
+          break;
+      default:
+          throw new RuntimeException();
+      }
+  }
+    
+  /**
+   * Parse and expand a parameter entity reference.
+   * <pre>
+   * [69] PEReference ::= '%' Name ';'
+   * </pre>
+   * <p>NOTE: the '%' has already been read.
+   */
+  private void parsePEReference()
     throws SAXException, IOException
-    {
-       String name;
-
-       name = "%" + readNmtoken (true);
-       require (';');
-       switch (getEntityType (name)) {
-       case ENTITY_UNDECLARED:
-           // VC: Entity Declared
-           handler.verror ("reference to undeclared parameter entity " + name);
-
-           // we should disable handling of all subsequent declarations
-           // unless this is a standalone document (info discarded)
-           break;
-       case ENTITY_INTERNAL:
-           if (inLiteral)
-               pushString (name, getEntityValue (name));
-           else
-               pushString (name, ' ' + getEntityValue (name) + ' ');
-           break;
-       case ENTITY_TEXT:
-           if (!inLiteral)
-               pushString (null, " ");
-           pushURL (true, name, getEntityIds (name), null, null, null, true);
-           if (!inLiteral)
-               pushString (null, " ");
-           break;
-       }
-    }
-
-    /**
-     * Parse an entity declaration.
-     * <pre>
-     * [70] EntityDecl ::= GEDecl | PEDecl
-     * [71] GEDecl ::= '&lt;!ENTITY' S Name S EntityDef S? '&gt;'
-     * [72] PEDecl ::= '&lt;!ENTITY' S '%' S Name S PEDef S? '&gt;'
-     * [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
-     * [74] PEDef ::= EntityValue | ExternalID
-     * [75] ExternalID ::= 'SYSTEM' S SystemLiteral
-     *            | 'PUBLIC' S PubidLiteral S SystemLiteral
-     * [76] NDataDecl ::= S 'NDATA' S Name
-     * </pre>
-     * <p>NOTE: the '&lt;!ENTITY' has already been read.
-     */
-    private void parseEntityDecl ()
+  {
+    String name;
+    
+    name = "%" + readNmtoken(true);
+    require(';');
+    switch (getEntityType(name))
+      {
+      case ENTITY_UNDECLARED:
+        // VC: Entity Declared
+        handler.verror("reference to undeclared parameter entity " + name);
+        
+        // we should disable handling of all subsequent declarations
+        // unless this is a standalone document (info discarded)
+        break;
+      case ENTITY_INTERNAL:
+        if (inLiteral)
+          {
+            pushString(name, getEntityValue(name));
+          }
+        else
+          {
+            pushString(name, ' ' + getEntityValue(name) + ' ');
+          }
+        break;
+      case ENTITY_TEXT:
+        if (!inLiteral)
+          {
+            pushString(null, " ");
+          }
+        pushURL(true, name, getEntityIds(name), null, null, null, true);
+        if (!inLiteral)
+          {
+            pushString(null, " ");
+          }
+        break;
+      }
+  }
+  
+  /**
+   * Parse an entity declaration.
+   * <pre>
+   * [70] EntityDecl ::= GEDecl | PEDecl
+   * [71] GEDecl ::= '&lt;!ENTITY' S Name S EntityDef S? '&gt;'
+   * [72] PEDecl ::= '&lt;!ENTITY' S '%' S Name S PEDef S? '&gt;'
+   * [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
+   * [74] PEDef ::= EntityValue | ExternalID
+   * [75] ExternalID ::= 'SYSTEM' S SystemLiteral
+   *       | 'PUBLIC' S PubidLiteral S SystemLiteral
+   * [76] NDataDecl ::= S 'NDATA' S Name
+   * </pre>
+   * <p>NOTE: the '&lt;!ENTITY' has already been read.
+   */
+  private void parseEntityDecl()
     throws Exception
-    {
-       boolean peFlag = false;
-       int flags = 0;
-
-       // Check for a parameter entity.
-       expandPE = false;
-       requireWhitespace ();
-       if (tryRead ('%')) {
-           peFlag = true;
-           requireWhitespace ();
-       }
-       expandPE = true;
-
-       // Read the entity name, and prepend
-       // '%' if necessary.
-       String name = readNmtoken (true);
-        //NE08
-       if (name.indexOf(':') >= 0)
-           error ("Illegal character(':') in entity name ", name, null);
-       if (peFlag) {
-           name = "%" + name;
-       }
-
-       // Read the entity value.
-       requireWhitespace ();
-       char c = readCh ();
-       unread (c);
-       if (c == '"' || c == '\'') {
-           // Internal entity ... replacement text has expanded refs
-           // to characters and PEs, but not to general entities
-           String value = readLiteral (flags);
-           setInternalEntity (name, value);
-       } else {
-           // Read the external IDs
-           String ids [] = readExternalIds (false, false);
-
-           // Check for NDATA declaration.
-           boolean white = tryWhitespace ();
-           if (!peFlag && tryRead ("NDATA")) {
-               if (!white)
-                   error ("whitespace required before NDATA");
-               requireWhitespace ();
-               String notationName = readNmtoken (true);
-               if (!skippedPE) {
-                   setExternalEntity (name, ENTITY_NDATA, ids, notationName);
-                   handler.unparsedEntityDecl (name, ids, notationName);
-               }
-           } else if (!skippedPE) {
-               setExternalEntity (name, ENTITY_TEXT, ids, null);
-               handler.getDeclHandler ()
-                   .externalEntityDecl (name, ids [0],
-                           handler.resolveURIs ()
-                                       // FIXME: ASSUMES not skipped
-                                       // "false" forces error on bad URI
-                               ? handler.absolutize (ids [2], ids [1], false)
-                               : ids [1]);
-           }
-       }
-
-       // Finish the declaration.
-       skipWhitespace ();
-       require ('>');
-    }
+  {
+    boolean peFlag = false;
+    int flags = 0;
+    
+    // Check for a parameter entity.
+    expandPE = false;
+    requireWhitespace();
+    if (tryRead('%'))
+      {
+        peFlag = true;
+        requireWhitespace();
+      }
+    expandPE = true;
+    
+    // Read the entity name, and prepend
+    // '%' if necessary.
+    String name = readNmtoken(true);
+    //NE08
+    if (name.indexOf(':') >= 0)
+      {
+        error("Illegal character(':') in entity name ", name, null);
+      }
+    if (peFlag)
+      {
+        name = "%" + name;
+      }
 
+    // Read the entity value.
+    requireWhitespace();
+    char c = readCh();
+    unread (c);
+    if (c == '"' || c == '\'')
+      {
+        // Internal entity ... replacement text has expanded refs
+        // to characters and PEs, but not to general entities
+        String value = readLiteral(flags);
+        setInternalEntity(name, value);
+      }
+    else
+      {
+        // Read the external IDs
+        ExternalIdentifiers ids = readExternalIds(false, false);
+        
+        // Check for NDATA declaration.
+        boolean white = tryWhitespace();
+        if (!peFlag && tryRead("NDATA"))
+          {
+            if (!white)
+              {
+                error("whitespace required before NDATA");
+              }
+            requireWhitespace();
+            String notationName = readNmtoken(true);
+            if (!skippedPE)
+              {
+                setExternalEntity(name, ENTITY_NDATA, ids, notationName);
+                handler.unparsedEntityDecl(name, ids.publicId, ids.systemId,
+                                           ids.baseUri, notationName);
+              }
+          }
+        else if (!skippedPE)
+          {
+            setExternalEntity(name, ENTITY_TEXT, ids, null);
+            handler.getDeclHandler()
+              .externalEntityDecl(name, ids.publicId,
+                                   handler.resolveURIs()
+                                   // FIXME: ASSUMES not skipped
+                                   // "false" forces error on bad URI
+                                   ? handler.absolutize(ids.baseUri,
+                                                        ids.systemId,
+                                                        false)
+                                   : ids.systemId);
+          }
+      }
+    
+    // Finish the declaration.
+    skipWhitespace();
+    require('>');
+  }
 
-    /**
-     * Parse a notation declaration.
-     * <pre>
-     * [82] NotationDecl ::= '&lt;!NOTATION' S Name S
-     *         (ExternalID | PublicID) S? '&gt;'
-     * [83] PublicID ::= 'PUBLIC' S PubidLiteral
-     * </pre>
-     * <P>NOTE: the '&lt;!NOTATION' has already been read.
-     */
-    private void parseNotationDecl ()
+  /**
+   * Parse a notation declaration.
+   * <pre>
+   * [82] NotationDecl ::= '&lt;!NOTATION' S Name S
+   *    (ExternalID | PublicID) S? '&gt;'
+   * [83] PublicID ::= 'PUBLIC' S PubidLiteral
+   * </pre>
+   * <P>NOTE: the '&lt;!NOTATION' has already been read.
+   */
+  private void parseNotationDecl()
     throws Exception
-    {
-       String nname, ids[];
-
-
-       requireWhitespace ();
-       nname = readNmtoken (true);
-        //NE08
-       if (nname.indexOf(':') >= 0)
-           error ("Illegal character(':') in notation name ", nname, null);
-       requireWhitespace ();
-
-       // Read the external identifiers.
-       ids = readExternalIds (true, false);
-
-       // Register the notation.
-       setNotation (nname, ids);
-
-       skipWhitespace ();
-       require ('>');
-    }
+  {
+    String nname;
+    ExternalIdentifiers ids;
+
+    requireWhitespace();
+    nname = readNmtoken(true);
+    //NE08
+    if (nname.indexOf(':') >= 0)
+      {
+        error("Illegal character(':') in notation name ", nname, null);
+      }
+    requireWhitespace();
 
+    // Read the external identifiers.
+    ids = readExternalIds(true, false);
 
-    /**
-     * Parse character data.
-     * <pre>
-     * [14] CharData ::= [^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)
-     * </pre>
-     */
-    private void parseCharData ()
+    // Register the notation.
+    setNotation(nname, ids);
+    
+    skipWhitespace();
+    require('>');
+  }
+  
+  /**
+   * Parse character data.
+   * <pre>
+   * [14] CharData ::= [^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)
+   * </pre>
+   */
+  private void parseCharData()
     throws Exception
-    {
-       char    c;
-       int     state = 0;
-       boolean pureWhite = false;
-
-       // assert (dataBufferPos == 0);
-
-       // are we expecting pure whitespace?  it might be dirty...
-       if ((currentElementContent == CONTENT_ELEMENTS) && !isDirtyCurrentElement)
-           pureWhite = true;
+  {
+    char c;
+    int state = 0;
+    boolean pureWhite = false;
 
-       // always report right out of readBuffer
-       // to minimize (pointless) buffer copies
-       while (true) {
-           int lineAugment = 0;
-           int columnAugment = 0;
-           int i;
+    // assert (dataBufferPos == 0);
+    
+    // are we expecting pure whitespace?  it might be dirty...
+    if ((currentElementContent == CONTENT_ELEMENTS) && !isDirtyCurrentElement)
+      {
+        pureWhite = true;
+      }
 
+    // always report right out of readBuffer
+    // to minimize (pointless) buffer copies
+    while (true)
+      {
+        int lineAugment = 0;
+        int columnAugment = 0;
+        int i;
+        
 loop:
-           for (i = readBufferPos; i < readBufferLength; i++) {
-               switch (c = readBuffer [i]) {
-               case '\n':
-                   lineAugment++;
-                   columnAugment = 0;
-                   // pureWhite unmodified
-                   break;
-               case '\r':      // should not happen!!
-               case '\t':
-               case ' ':
-                   // pureWhite unmodified
-                   columnAugment++;
-                   break;
-               case '&':
-               case '<':
-                   columnAugment++;
-                   // pureWhite unmodified
-                   // CLEAN end of text sequence
-                   state = 1;
-                   break loop;
-               case ']':
-                   // that's not a whitespace char, and
-                   // can not terminate pure whitespace either
-                   pureWhite = false;
-                   if ((i + 2) < readBufferLength) {
-                       if (readBuffer [i + 1] == ']'
-                               && readBuffer [i + 2] == '>') {
-                           // ERROR end of text sequence
-                           state = 2;
-                           break loop;
-                       }
-                   } else {
-                       // FIXME missing two end-of-buffer cases
-                   }
-                   columnAugment++;
-                   break;
-               default:
-                       if ((c < 0x0020 || c > 0xFFFD)
-                          || ((c >= 0x007f) && (c <= 0x009f) && (c != 0x0085) 
-                              && xmlVersion == XML_11)) 
-                               error ("illegal XML character U+"
-                                       + Integer.toHexString (c));
-                   // that's not a whitespace char
-                   pureWhite = false;
-                   columnAugment++;
-               }
-           }
-
-           // report text thus far
-           if (lineAugment > 0) {
-               line += lineAugment;
-               column = columnAugment;
-           } else {
-               column += columnAugment;
-           }
-
-           // report characters/whitspace
-           int         length = i - readBufferPos;
-
-           if (length != 0) {
-               if (pureWhite)
-                   handler.ignorableWhitespace (readBuffer,
-                               readBufferPos, length);
-               else
-                   handler.charData (readBuffer, readBufferPos, length);
-               readBufferPos = i;
-           }
-           
-           if (state != 0)
-               break;
-
-           // fill next buffer from this entity, or
-           // pop stack and continue with previous entity
-           unread (readCh ());
-       }
-        if (!pureWhite)
-           isDirtyCurrentElement = true;
-       // finish, maybe with error
-       if (state != 1) // finish, no error
-           error ("character data may not contain ']]>'");
-    }
-
-
-    //////////////////////////////////////////////////////////////////////
-    // High-level reading and scanning methods.
-    //////////////////////////////////////////////////////////////////////
-
-    /**
-     * Require whitespace characters.
-     */
-    private void requireWhitespace ()
+        for (i = readBufferPos; i < readBufferLength; i++)
+          {
+            switch (c = readBuffer[i])
+              {
+              case '\n':
+                lineAugment++;
+                columnAugment = 0;
+                // pureWhite unmodified
+                break;
+              case '\r':  // should not happen!!
+              case '\t':
+              case ' ':
+                // pureWhite unmodified
+                columnAugment++;
+                break;
+              case '&':
+              case '<':
+                columnAugment++;
+                // pureWhite unmodified
+                // CLEAN end of text sequence
+                state = 1;
+                break loop;
+              case ']':
+                // that's not a whitespace char, and
+                // can not terminate pure whitespace either
+                pureWhite = false;
+                if ((i + 2) < readBufferLength)
+                  {
+                    if (readBuffer [i + 1] == ']'
+                        && readBuffer [i + 2] == '>')
+                      {
+                        // ERROR end of text sequence
+                        state = 2;
+                        break loop;
+                      }
+                  }
+                else
+                  {
+                    // FIXME missing two end-of-buffer cases
+                  }
+                columnAugment++;
+                break;
+              default:
+                if ((c < 0x0020 || c > 0xFFFD)
+                    || ((c >= 0x007f) && (c <= 0x009f) && (c != 0x0085) 
+                        && xmlVersion == XML_11)) 
+                  {
+                    error("illegal XML character U+"
+                          + Integer.toHexString(c));
+                  }
+                // that's not a whitespace char
+                pureWhite = false;
+                columnAugment++;
+              }
+          }
+        
+        // report text thus far
+        if (lineAugment > 0)
+          {
+            line += lineAugment;
+            column = columnAugment;
+          }
+        else
+          {
+            column += columnAugment;
+          }
+        
+        // report characters/whitspace
+        int length = i - readBufferPos;
+        
+        if (length != 0)
+          {
+            if (pureWhite)
+              {
+                handler.ignorableWhitespace(readBuffer,
+                                            readBufferPos, length);
+              }
+            else
+              {
+                handler.charData(readBuffer, readBufferPos, length);
+              }
+            readBufferPos = i;
+          }
+        
+        if (state != 0)
+          {
+            break;
+          }
+        
+        // fill next buffer from this entity, or
+        // pop stack and continue with previous entity
+        unread(readCh());
+      }
+    if (!pureWhite)
+      {
+        isDirtyCurrentElement = true;
+      }
+    // finish, maybe with error
+    if (state != 1)  // finish, no error
+      {
+        error("character data may not contain ']]>'");
+      }
+  }
+  
+  //////////////////////////////////////////////////////////////////////
+  // High-level reading and scanning methods.
+  //////////////////////////////////////////////////////////////////////
+  
+  /**
+   * Require whitespace characters.
+   */
+  private void requireWhitespace()
     throws SAXException, IOException
-    {
-       char c = readCh ();
-       if (isWhitespace (c)) {
-           skipWhitespace ();
-       } else {
-           error ("whitespace required", c, null);
-       }
-    }
-
+  {
+    char c = readCh();
+    if (isWhitespace(c))
+      {
+        skipWhitespace();
+      }
+    else
+      {
+        error("whitespace required", c, null);
+      }
+  }
 
-    /**
-     * Skip whitespace characters.
-     * <pre>
-     * [3] S ::= (#x20 | #x9 | #xd | #xa)+
-     * </pre>
-     */
-    private void skipWhitespace ()
+  /**
+   * Skip whitespace characters.
+   * <pre>
+   * [3] S ::= (#x20 | #x9 | #xd | #xa)+
+   * </pre>
+   */
+  private void skipWhitespace()
     throws SAXException, IOException
-    {
-       // Start with a little cheat.  Most of
-       // the time, the white space will fall
-       // within the current read buffer; if
-       // not, then fall through.
-       if (USE_CHEATS) {
-           int lineAugment = 0;
-           int columnAugment = 0;
-
+  {
+    // Start with a little cheat.  Most of
+    // the time, the white space will fall
+    // within the current read buffer; if
+    // not, then fall through.
+    if (USE_CHEATS)
+      {
+        int lineAugment = 0;
+        int columnAugment = 0;
+        
 loop:
-           for (int i = readBufferPos; i < readBufferLength; i++) {
-               switch (readBuffer [i]) {
-               case ' ':
-               case '\t':
-               case '\r':
-                   columnAugment++;
-                   break;
-               case '\n':
-                   lineAugment++;
-                   columnAugment = 0;
-                   break;
-               case '%':
-                   if (expandPE)
-                       break loop;
-                   // else fall through...
-               default:
-                   readBufferPos = i;
-                   if (lineAugment > 0) {
-                       line += lineAugment;
-                       column = columnAugment;
-                   } else {
-                       column += columnAugment;
-                   }
-                   return;
-               }
-           }
-       }
-
-       // OK, do it the slow way.
-       char c = readCh ();
-       while (isWhitespace (c)) {
-           c = readCh ();
-       }
-       unread (c);
-    }
-
-
-    /**
-     * Read a name or (when parsing an enumeration) name token.
-     * <pre>
-     * [5] Name ::= (Letter | '_' | ':') (NameChar)*
-     * [7] Nmtoken ::= (NameChar)+
-     * </pre>
-     */
-    private String readNmtoken (boolean isName)
+        for (int i = readBufferPos; i < readBufferLength; i++)
+          {
+            switch (readBuffer[i])
+              {
+              case ' ':
+              case '\t':
+              case '\r':
+                columnAugment++;
+                break;
+              case '\n':
+                lineAugment++;
+                columnAugment = 0;
+                break;
+              case '%':
+                if (expandPE)
+                  {
+                    break loop;
+                  }
+                // else fall through...
+              default:
+                readBufferPos = i;
+                if (lineAugment > 0)
+                  {
+                    line += lineAugment;
+                    column = columnAugment;
+                  }
+                else
+                  {
+                    column += columnAugment;
+                  }
+                return;
+              }
+          }
+      }
+    
+    // OK, do it the slow way.
+    char c = readCh ();
+    while (isWhitespace(c))
+      {
+        c = readCh();
+      }
+    unread(c);
+  }
+  
+  /**
+   * Read a name or (when parsing an enumeration) name token.
+   * <pre>
+   * [5] Name ::= (Letter | '_' | ':') (NameChar)*
+   * [7] Nmtoken ::= (NameChar)+
+   * </pre>
+   */
+  private String readNmtoken(boolean isName)
     throws SAXException, IOException
-    {
-       char c;
-
-       if (USE_CHEATS) {
-loop:
-           for (int i = readBufferPos; i < readBufferLength; i++) {
-               c = readBuffer [i];
-               switch (c) {
-                 case '%':
-                   if (expandPE)
-                       break loop;
-                   // else fall through...
-
-                   // What may legitimately come AFTER a name/nmtoken?
-                 case '<': case '>': case '&':
-                 case ',': case '|': case '*': case '+': case '?':
-                 case ')':
-                 case '=':
-                 case '\'': case '"':
-                 case '[':
-                 case ' ': case '\t': case '\r': case '\n':
-                 case ';':
-                 case '/':
-                   int start = readBufferPos;
-                   if (i == start)
-                       error ("name expected", readBuffer [i], null);
-                   readBufferPos = i;
-                   return intern (readBuffer, start, i - start);
-
-                 default:
-// FIXME ... per IBM's OASIS test submission, these:
-//   ?         U+06dd 
-//   Combining U+309B
-                   //these switches are kind of ugly but at least we won't
-                   //have to go over the whole lits for each char
-                   if (isName && i == readBufferPos){
-                           char c2 = (char) (c & 0x00f0);
-                           switch (c & 0xff00){
-                               //starting with 01
-                               case 0x0100:
-                                   switch (c2){
-                                       case 0x0030:
-                                           if (c == 0x0132 || c == 0x0133 || c == 0x013f)
-                                               error ("Not a name start character, U+"
-                                                      + Integer.toHexString (c));
-                                       break;
-                                       case 0x0040:
-                                           if (c == 0x0140 || c == 0x0149)
-                                               error ("Not a name start character, U+"
-                                                      + Integer.toHexString (c));
-                                       break;
-                                       case 0x00c0:
-                                           if (c == 0x01c4 || c == 0x01cc)
-                                               error ("Not a name start character, U+"
-                                                      + Integer.toHexString (c));
-                                       break;
-                                       case 0x00f0:
-                                           if (c == 0x01f1 || c == 0x01f3)
-                                               error ("Not a name start character, U+"
-                                                      + Integer.toHexString (c));
-                                       break;
-                                       case 0x00b0:
-                                           if (c == 0x01f1 || c == 0x01f3)
-                                               error ("Not a name start character, U+"
-                                                      + Integer.toHexString (c));
-                                       break;
-                                       default:
-                                           if (c == 0x017f)
-                                               error ("Not a name start character, U+"
-                                                       + Integer.toHexString (c));     
-                                   }
-                                   
-                               break;
-                               //starting with 11
-                               case 0x1100:
-                                   switch (c2){
-                                       case 0x0000:
-                                           if (c == 0x1104 || c == 0x1108 ||
-                                               c == 0x110a || c == 0x110d)
-                                               error ("Not a name start character, U+"
-                                                    + Integer.toHexString (c));
-                                       break;
-                                       case 0x0030:
-                                           if (c == 0x113b || c == 0x113f)
-                                               error ("Not a name start character, U+"
-                                                      + Integer.toHexString (c));
-                                       break;
-                                       case 0x0040:
-                                           if (c == 0x1141 || c == 0x114d
-                                               || c == 0x114f )
-                                               error ("Not a name start character, U+"
-                                                      + Integer.toHexString (c));
-                                       break;
-                                       case 0x0050:
-                                            if (c == 0x1151 || c == 0x1156)
-                                                error ("Not a name start character, U+"
-                                                       + Integer.toHexString (c));
-                                       break;
-                                       case 0x0060:
-                                            if (c == 0x1162 || c == 0x1164
-                                                || c == 0x1166 || c == 0x116b
-                                                || c == 0x116f)
-                                                error ("Not a name start character, U+"
-                                                        + Integer.toHexString (c));
-                                               break;
-                                       case 0x00b0:
-                                            if (c == 0x11b6 || c == 0x11b9
-                                                || c == 0x11bb || c == 0x116f)
-                                                error ("Not a name start character, U+"
-                                                       + Integer.toHexString (c));
-                                       break;
-                                       default:
-                                           if (c == 0x1174 || c == 0x119f
-                                               || c == 0x11ac || c == 0x11c3
-                                               || c == 0x11f1)
-                                               error ("Not a name start character, U+"
-                                                       + Integer.toHexString (c));
-                                   }
-                               break;
-                               default:
-                                  if (c == 0x0e46 || c == 0x1011 
-                                      || c == 0x212f || c == 0x0587
-                                      || c == 0x0230 )
-                                      error ("Not a name start character, U+"
-                                             + Integer.toHexString (c));
-                           }
-                   }
-                   // punt on exact tests from Appendix A; approximate
-                   // them using the Unicode ID start/part rules
-                   if (i == readBufferPos && isName) {
-                       if (!Character.isUnicodeIdentifierStart (c)
-                               && c != ':' && c != '_')
-                           error ("Not a name start character, U+"
-                                 + Integer.toHexString (c));
-                   } else if (!Character.isUnicodeIdentifierPart (c)
-                           && c != '-' && c != ':' && c != '_' && c != '.'
-                           && !isExtender (c))
-                       error ("Not a name character, U+"
-                               + Integer.toHexString (c));
-               }
-           }
-       }
-
-       nameBufferPos = 0;
-
-       // Read the first character.
+  {
+    char c;
+    
+    if (USE_CHEATS)
+      {
 loop:
-       while (true) {
-           c = readCh ();
-           switch (c) {
-           case '%':
-           case '<': case '>': case '&':
-           case ',': case '|': case '*': case '+': case '?':
-           case ')':
-           case '=':
-           case '\'': case '"':
-           case '[':
-           case ' ': case '\t': case '\n': case '\r':
-           case ';':
-           case '/':
-               unread (c);
-               if (nameBufferPos == 0) {
-                   error ("name expected");
-               }
-               // punt on exact tests from Appendix A, but approximate them
-               if (isName
-                       && !Character.isUnicodeIdentifierStart (
-                               nameBuffer [0])
-                       && ":_".indexOf (nameBuffer [0]) == -1)
-                   error ("Not a name start character, U+"
-                             + Integer.toHexString (nameBuffer [0]));
-               String s = intern (nameBuffer, 0, nameBufferPos);
-               nameBufferPos = 0;
-               return s;
-           default:
-               // punt on exact tests from Appendix A, but approximate them
-
-               if ((nameBufferPos != 0 || !isName)
-                       && !Character.isUnicodeIdentifierPart (c)
-                       && ":-_.".indexOf (c) == -1
-                       && !isExtender (c))
-                   error ("Not a name character, U+"
-                           + Integer.toHexString (c));
-               if (nameBufferPos >= nameBuffer.length)
-                   nameBuffer =
-                       (char[]) extendArray (nameBuffer,
-                                   nameBuffer.length, nameBufferPos);
-               nameBuffer [nameBufferPos++] = c;
-           }
-       }
-    }
-
-    private static boolean isExtender (char c)
-    {
-       // [88] Extender ::= ...
-       return c == 0x00b7 || c == 0x02d0 || c == 0x02d1 || c == 0x0387
-              || c == 0x0640 || c == 0x0e46 || c == 0x0ec6 || c == 0x3005
-              || (c >= 0x3031 && c <= 0x3035)
-              || (c >= 0x309d && c <= 0x309e)
-              || (c >= 0x30fc && c <= 0x30fe);
-    }
+        for (int i = readBufferPos; i < readBufferLength; i++)
+          {
+            c = readBuffer[i];
+            switch (c)
+              {
+              case '%':
+                if (expandPE)
+                  {
+                    break loop;
+                  }
+                // else fall through...
+                
+                // What may legitimately come AFTER a name/nmtoken?
+              case '<': case '>': case '&':
+              case ',': case '|': case '*': case '+': case '?':
+              case ')':
+              case '=':
+              case '\'': case '"':
+              case '[':
+              case ' ': case '\t': case '\r': case '\n':
+              case ';':
+              case '/':
+                int start = readBufferPos;
+                if (i == start)
+                  {
+                    error("name expected", readBuffer[i], null);
+                  }
+                readBufferPos = i;
+                return intern(readBuffer, start, i - start);
+                
+              default:
+                // FIXME ... per IBM's OASIS test submission, these:
+                //   ?    U+06dd 
+                //   Combining  U+309B
+                //these switches are kind of ugly but at least we won't
+                //have to go over the whole lits for each char
+                if (isName && i == readBufferPos)
+                  {
+                    char c2 = (char) (c & 0x00f0);
+                    switch (c & 0xff00)
+                      {
+                        //starting with 01
+                      case 0x0100:
+                        switch (c2)
+                          {
+                          case 0x0030:
+                            if (c == 0x0132 || c == 0x0133 || c == 0x013f)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x0040:
+                            if (c == 0x0140 || c == 0x0149)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x00c0:
+                            if (c == 0x01c4 || c == 0x01cc)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x00f0:
+                            if (c == 0x01f1 || c == 0x01f3)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x00b0:
+                            if (c == 0x01f1 || c == 0x01f3)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          default:
+                            if (c == 0x017f)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                          }
+                        
+                        break;
+                        //starting with 11
+                      case 0x1100:
+                        switch (c2)
+                          {
+                          case 0x0000:
+                            if (c == 0x1104 || c == 0x1108 ||
+                                c == 0x110a || c == 0x110d)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x0030:
+                            if (c == 0x113b || c == 0x113f)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x0040:
+                            if (c == 0x1141 || c == 0x114d
+                                || c == 0x114f )
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x0050:
+                            if (c == 0x1151 || c == 0x1156)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x0060:
+                            if (c == 0x1162 || c == 0x1164
+                                || c == 0x1166 || c == 0x116b
+                                || c == 0x116f)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          case 0x00b0:
+                            if (c == 0x11b6 || c == 0x11b9
+                                || c == 0x11bb || c == 0x116f)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                            break;
+                          default:
+                            if (c == 0x1174 || c == 0x119f
+                                || c == 0x11ac || c == 0x11c3
+                                || c == 0x11f1)
+                              {
+                                error("Not a name start character, U+"
+                                      + Integer.toHexString(c));
+                              }
+                          }
+                        break;
+                      default:
+                        if (c == 0x0e46 || c == 0x1011 
+                            || c == 0x212f || c == 0x0587
+                            || c == 0x0230 )
+                          {
+                            error("Not a name start character, U+"
+                                  + Integer.toHexString(c));
+                          }
+                      }
+                  }
+                // punt on exact tests from Appendix A; approximate
+                // them using the Unicode ID start/part rules
+                if (i == readBufferPos && isName)
+                  {
+                    if (!Character.isUnicodeIdentifierStart(c)
+                        && c != ':' && c != '_')
+                      {
+                        error("Not a name start character, U+"
+                              + Integer.toHexString(c));
+                      }
+                  }
+                else if (!Character.isUnicodeIdentifierPart(c)
+                         && c != '-' && c != ':' && c != '_' && c != '.'
+                         && !isExtender(c))
+                  {
+                    error("Not a name character, U+"
+                          + Integer.toHexString(c));
+                  }
+              }
+          }
+      }
+    
+    nameBufferPos = 0;
 
+    // Read the first character.
+loop:
+    while (true)
+      {
+        c = readCh();
+        switch (c)
+          {
+          case '%':
+          case '<': case '>': case '&':
+          case ',': case '|': case '*': case '+': case '?':
+          case ')':
+          case '=':
+          case '\'': case '"':
+          case '[':
+          case ' ': case '\t': case '\n': case '\r':
+          case ';':
+          case '/':
+            unread(c);
+            if (nameBufferPos == 0)
+              {
+                error ("name expected");
+              }
+            // punt on exact tests from Appendix A, but approximate them
+            if (isName
+                && !Character.isUnicodeIdentifierStart(nameBuffer[0])
+                && ":_".indexOf(nameBuffer[0]) == -1)
+              {
+                error("Not a name start character, U+"
+                      + Integer.toHexString(nameBuffer[0]));
+              }
+            String s = intern(nameBuffer, 0, nameBufferPos);
+            nameBufferPos = 0;
+            return s;
+          default:
+            // punt on exact tests from Appendix A, but approximate them
+            
+            if ((nameBufferPos != 0 || !isName)
+                && !Character.isUnicodeIdentifierPart(c)
+                && ":-_.".indexOf(c) == -1
+                && !isExtender(c))
+              {
+                error("Not a name character, U+"
+                      + Integer.toHexString(c));
+              }
+            if (nameBufferPos >= nameBuffer.length)
+              {
+                nameBuffer =
+                  (char[]) extendArray(nameBuffer,
+                                       nameBuffer.length, nameBufferPos);
+              }
+            nameBuffer[nameBufferPos++] = c;
+          }
+      }
+  }
+  
+  private static boolean isExtender(char c)
+  {
+    // [88] Extender ::= ...
+    return c == 0x00b7 || c == 0x02d0 || c == 0x02d1 || c == 0x0387
+      || c == 0x0640 || c == 0x0e46 || c == 0x0ec6 || c == 0x3005
+      || (c >= 0x3031 && c <= 0x3035)
+      || (c >= 0x309d && c <= 0x309e)
+      || (c >= 0x30fc && c <= 0x30fe);
+  }
 
-    /**
-     * Read a literal.  With matching single or double quotes as
-     * delimiters (and not embedded!) this is used to parse:
-     * <pre>
-     * [9] EntityValue ::= ... ([^%&amp;] | PEReference | Reference)* ...
-     * [10] AttValue ::= ... ([^<&] | Reference)* ...
-     * [11] SystemLiteral ::= ... (URLchar - "'")* ...
-     * [12] PubidLiteral ::= ... (PubidChar - "'")* ...
-     * </pre>
-     * as well as the quoted strings in XML and text declarations
-     * (for version, encoding, and standalone) which have their
-     * own constraints.
-     */
-    private String readLiteral (int flags)
+  /**
+   * Read a literal.  With matching single or double quotes as
+   * delimiters (and not embedded!) this is used to parse:
+   * <pre>
+    [9] EntityValue ::= ... ([^%&amp;] | PEReference | Reference)* ...
+    [10] AttValue ::= ... ([^<&] | Reference)* ...
+    [11] SystemLiteral ::= ... (URLchar - "'")* ...
+    [12] PubidLiteral ::= ... (PubidChar - "'")* ...
+   * </pre>
+   * as well as the quoted strings in XML and text declarations
+   * (for version, encoding, and standalone) which have their
+   * own constraints.
+   */
+  private String readLiteral(int flags)
     throws SAXException, IOException
-    {
-       char    delim, c;
-       int     startLine = line;
-       boolean saved = expandPE;
-       boolean savedReport = doReport;
-
-       // Find the first delimiter.
-       delim = readCh ();
-       if (delim != '"' && delim != '\'') {
-           error ("expected '\"' or \"'\"", delim, null);
-           return null;
-       }
-       inLiteral = true;
-       if ((flags & LIT_DISABLE_PE) != 0)
-           expandPE = false;
-       doReport = false;
-
-       // Each level of input source has its own buffer; remember
-       // ours, so we won't read the ending delimiter from any
-       // other input source, regardless of entity processing.
-       char ourBuf [] = readBuffer;
-
-       // Read the literal.
-       try {
-           c = readCh ();
-           boolean ampRead = false;
+  {
+    char delim, c;
+    int startLine = line;
+    boolean saved = expandPE;
+    boolean savedReport = doReport;
+    
+    // Find the first delimiter.
+    delim = readCh();
+    if (delim != '"' && delim != '\'')
+      {
+        error("expected '\"' or \"'\"", delim, null);
+        return null;
+      }
+    inLiteral = true;
+    if ((flags & LIT_DISABLE_PE) != 0)
+      {
+        expandPE = false;
+      }
+    doReport = false;
+    
+    // Each level of input source has its own buffer; remember
+    // ours, so we won't read the ending delimiter from any
+    // other input source, regardless of entity processing.
+    char[] ourBuf = readBuffer;
+
+    // Read the literal.
+    try
+      {
+        c = readCh();
+        boolean ampRead = false;
 loop:
-           while (! (c == delim && readBuffer == ourBuf)) {
-               switch (c) {
-                   // attributes and public ids are normalized
-                   // in almost the same ways
-               case '\n':
-               case '\r':
-                   if ((flags & (LIT_ATTRIBUTE | LIT_PUBID)) != 0)
-                       c = ' ';
-                   break;
-               case '\t':
-                   if ((flags & LIT_ATTRIBUTE) != 0)
-                       c = ' ';
-                   break;
-               case '&':
-                   c = readCh ();
-                   // Char refs are expanded immediately, except for
-                   // all the cases where it's deferred.
-                   if (c == '#') {
-                       if ((flags & LIT_DISABLE_CREF) != 0) {
-                           dataBufferAppend ('&');
-                           break;
-                       }
-                        parseCharRef (false /* Do not do flushDataBuffer */);
-
-                       // exotic WFness risk: this is an entity literal,
-                       // dataBuffer [dataBufferPos - 1] == '&', and
-                       // following chars are a _partial_ entity/char ref
-                   
-                   // It looks like an entity ref ...
-                   } else {
-                       unread (c);
-                       // Expand it?
-                       if ((flags & LIT_ENTITY_REF) > 0) {
-                           parseEntityRef (false);
-                           if (String.valueOf (readBuffer).equals("&#38;"))
-                               ampRead = true;
+        while (! (c == delim && readBuffer == ourBuf))
+          {
+            switch (c)
+              {
+                // attributes and public ids are normalized
+                // in almost the same ways
+              case '\n':
+              case '\r':
+                if ((flags & (LIT_ATTRIBUTE | LIT_PUBID)) != 0)
+                  {
+                    c = ' ';
+                  }
+                break;
+              case '\t':
+                if ((flags & LIT_ATTRIBUTE) != 0)
+                  {
+                    c = ' ';
+                  }
+                break;
+              case '&':
+                c = readCh();
+                // Char refs are expanded immediately, except for
+                // all the cases where it's deferred.
+                if (c == '#')
+                  {
+                    if ((flags & LIT_DISABLE_CREF) != 0)
+                      {
+                        dataBufferAppend('&');
+                        break;
+                      }
+                    parseCharRef(false /* Do not do flushDataBuffer */);
+                    
+                    // exotic WFness risk: this is an entity literal,
+                    // dataBuffer [dataBufferPos - 1] == '&', and
+                    // following chars are a _partial_ entity/char ref
+                    
+                    // It looks like an entity ref ...
+                  }
+                else
+                  {
+                    unread(c);
+                    // Expand it?
+                    if ((flags & LIT_ENTITY_REF) > 0)
+                      {
+                        parseEntityRef(false);
+                        if (String.valueOf(readBuffer).equals("&#38;"))
+                          {
+                            ampRead = true;
+                          }
                         //Is it just data?
-                       } else if ((flags & LIT_DISABLE_EREF) != 0) {
-                           dataBufferAppend ('&');
-
-                       // OK, it will be an entity ref -- expanded later.
-                       } else {
-                           String name = readNmtoken (true);
-                           require (';');
-                           dataBufferAppend ('&');
-                           dataBufferAppend (name);
-                           dataBufferAppend (';');
-                       }
-                   }
-                   c = readCh ();
-                   continue loop;
-
-               case '<':
-                   // and why?  Perhaps so "&foo;" expands the same
-                   // inside and outside an attribute?
-                   if ((flags & LIT_ATTRIBUTE) != 0)
-                       error ("attribute values may not contain '<'");
-                   break;
-
-               // We don't worry about case '%' and PE refs, readCh does.
-
-               default:
-                   break;
-               }
-               dataBufferAppend (c);
-               c = readCh ();
-           }
-       } catch (EOFException e) {
-           error ("end of input while looking for delimiter (started on line "
-                  + startLine + ')', null, new Character (delim).toString ());
-       }
-       inLiteral = false;
-       expandPE = saved;
-       doReport = savedReport;
-
-       // Normalise whitespace if necessary.
-       if ((flags & LIT_NORMALIZE) > 0) {
-           dataBufferNormalize ();
-       }
-
-       // Return the value.
-       return dataBufferToString ();
-    }
-
-
-    /**
-     * Try reading external identifiers.
-     * A system identifier is not required for notations.
-     * @param inNotation Are we parsing a notation decl?
-     * @param isSubset Parsing external subset decl (may be omitted)?
-     * @return A three-member String array containing the identifiers,
-     * or nulls. Order: public, system, baseURI.
-     */
-    private String[] readExternalIds (boolean inNotation, boolean isSubset)
+                      }
+                    else if ((flags & LIT_DISABLE_EREF) != 0)
+                      {
+                        dataBufferAppend('&');
+                        
+                        // OK, it will be an entity ref -- expanded later.
+                      }
+                    else
+                      {
+                        String name = readNmtoken(true);
+                        require(';');
+                        dataBufferAppend('&');
+                        dataBufferAppend(name);
+                        dataBufferAppend(';');
+                      }
+                  }
+                c = readCh();
+                continue loop;
+                
+              case '<':
+                // and why?  Perhaps so "&foo;" expands the same
+                // inside and outside an attribute?
+                if ((flags & LIT_ATTRIBUTE) != 0)
+                  {
+                    error("attribute values may not contain '<'");
+                  }
+                break;
+
+                // We don't worry about case '%' and PE refs, readCh does.
+                
+              default:
+                break;
+              }
+            dataBufferAppend(c);
+            c = readCh();
+          }
+      }
+    catch (EOFException e)
+      {
+        error("end of input while looking for delimiter (started on line "
+              + startLine + ')', null, new Character(delim).toString());
+      }
+    inLiteral = false;
+    expandPE = saved;
+    doReport = savedReport;
+    
+    // Normalise whitespace if necessary.
+    if ((flags & LIT_NORMALIZE) > 0)
+      {
+        dataBufferNormalize();
+      }
+    
+    // Return the value.
+    return dataBufferToString();
+  }
+  
+  /**
+   * Try reading external identifiers.
+   * A system identifier is not required for notations.
+   * @param inNotation Are we parsing a notation decl?
+   * @param isSubset Parsing external subset decl (may be omitted)?
+   * @return A three-member String array containing the identifiers,
+   *  or nulls. Order: public, system, baseURI.
+   */
+  private ExternalIdentifiers readExternalIds(boolean inNotation,
+                                              boolean isSubset)
     throws Exception
-    {
-       char    c;
-       String  ids[] = new String [3];
-       int     flags = LIT_DISABLE_CREF | LIT_DISABLE_PE | LIT_DISABLE_EREF;
-
-       if (tryRead ("PUBLIC")) {
-           requireWhitespace ();
-           ids [0] = readLiteral (LIT_NORMALIZE | LIT_PUBID | flags);
-           if (inNotation) {
-               skipWhitespace ();
-               c = readCh ();
-               unread (c);
-               if (c == '"' || c == '\'') {
-                   ids [1] = readLiteral (flags);
-               }
-           } else {
-               requireWhitespace ();
-               ids [1] = readLiteral (flags);
-           }
-
-           for (int i = 0; i < ids [0].length (); i++) {
-               c = ids [0].charAt (i);
-               if (c >= 'a' && c <= 'z')
-                   continue;
-               if (c >= 'A' && c <= 'Z')
-                   continue;
-               if (" \r\n0123456789-' ()+,./:=?;!*#@$_%".indexOf (c) != -1)
-                   continue;
-               error ("illegal PUBLIC id character U+"
-                       + Integer.toHexString (c));
-           }
-       } else if (tryRead ("SYSTEM")) {
-           requireWhitespace ();
-           ids [1] = readLiteral (flags);
-       } else if (!isSubset) 
-               error ("missing SYSTEM or PUBLIC keyword");
-
-       if (ids [1] != null) {
-           if (ids [1].indexOf ('#') != -1)
-               handler.verror ("SYSTEM id has a URI fragment: " + ids [1]);
-           ids [2] = handler.getSystemId ();
-           if (ids [2] == null)
-               handler.warn ("No base URI; hope URI is absolute: "
-                       + ids [1]);
-       }
-
-       return ids;
-    }
-
-
-    /**
-     * Test if a character is whitespace.
-     * <pre>
-     * [3] S ::= (#x20 | #x9 | #xd | #xa)+
-     * </pre>
-     * @param c The character to test.
-     * @return true if the character is whitespace.
-     */
-    private final boolean isWhitespace (char c)
-    {
-       if (c > 0x20)
-           return false;
-       if (c == 0x20 || c == 0x0a || c == 0x09 || c == 0x0d)
-           return true;
-       return false;   // illegal ...
-    }
-
-
-    //////////////////////////////////////////////////////////////////////
-    // Utility routines.
-    //////////////////////////////////////////////////////////////////////
-
-
-    /**
-     * Add a character to the data buffer.
-     */
-    private void dataBufferAppend (char c)
-    {
-       // Expand buffer if necessary.
-       if (dataBufferPos >= dataBuffer.length)
-           dataBuffer =
-               (char[]) extendArray (dataBuffer,
-                       dataBuffer.length, dataBufferPos);
-       dataBuffer [dataBufferPos++] = c;
-    }
-
-
-    /**
-     * Add a string to the data buffer.
-     */
-    private void dataBufferAppend (String s)
-    {
-       dataBufferAppend (s.toCharArray (), 0, s.length ());
-    }
-
-
-    /**
-     * Append (part of) a character array to the data buffer.
-     */
-    private void dataBufferAppend (char ch[], int start, int length)
-    {
-       dataBuffer = (char[])
-               extendArray (dataBuffer, dataBuffer.length,
-                                   dataBufferPos + length);
-
-       System.arraycopy (ch, start, dataBuffer, dataBufferPos, length);
-       dataBufferPos += length;
-    }
-
-
-    /**
-     * Normalise space characters in the data buffer.
-     */
-    private void dataBufferNormalize ()
-    {
-       int i = 0;
-       int j = 0;
-       int end = dataBufferPos;
-
-       // Skip spaces at the start.
-       while (j < end && dataBuffer [j] == ' ') {
-           j++;
-       }
-
-       // Skip whitespace at the end.
-       while (end > j && dataBuffer [end - 1] == ' ') {
-           end --;
-       }
-
-       // Start copying to the left.
-       while (j < end) {
-
-           char c = dataBuffer [j++];
-
-           // Normalise all other spaces to
-           // a single space.
-           if (c == ' ') {
-               while (j < end && dataBuffer [j++] == ' ')
-                   continue;
-               dataBuffer [i++] = ' ';
-               dataBuffer [i++] = dataBuffer [j - 1];
-           } else {
-               dataBuffer [i++] = c;
-           }
-       }
-
-       // The new length is <= the old one.
-       dataBufferPos = i;
-    }
-
-
-    /**
-     * Convert the data buffer to a string.
-     */
-    private String dataBufferToString ()
-    {
-       String s = new String (dataBuffer, 0, dataBufferPos);
-       dataBufferPos = 0;
-       return s;
-    }
-
-
-    /**
-     * Flush the contents of the data buffer to the handler, as
-     * appropriate, and reset the buffer for new input.
-     */
-    private void dataBufferFlush ()
-    throws SAXException
-    {
-       if (currentElementContent == CONTENT_ELEMENTS
-               && dataBufferPos > 0
-               && !inCDATA
-               ) {
-           // We can't just trust the buffer to be whitespace, there
-           // are (error) cases when it isn't
-           for (int i = 0; i < dataBufferPos; i++) {
-               if (!isWhitespace (dataBuffer [i])) {
-                   handler.charData (dataBuffer, 0, dataBufferPos);
-                   dataBufferPos = 0;
-               }
-           }
-           if (dataBufferPos > 0) {
-               handler.ignorableWhitespace (dataBuffer, 0, dataBufferPos);
-               dataBufferPos = 0;
-           }
-       } else if (dataBufferPos > 0) {
-           handler.charData (dataBuffer, 0, dataBufferPos);
-           dataBufferPos = 0;
-       }
-    }
-
-
-    /**
-     * Require a string to appear, or throw an exception.
-     * <p><em>Precondition:</em> Entity expansion is not required.
-     * <p><em>Precondition:</em> data buffer has no characters that
-     * will get sent to the application.
-     */
-    private void require (String delim)
-    throws SAXException, IOException
-    {
-       int     length = delim.length ();
-       char    ch [];
-               
-       if (length < dataBuffer.length) {
-           ch = dataBuffer;
-           delim.getChars (0, length, ch, 0);
-       } else
-           ch = delim.toCharArray ();
-
-       if (USE_CHEATS
-               && length <= (readBufferLength - readBufferPos)) {
-           int offset = readBufferPos;
-
-           for (int i = 0; i < length; i++, offset++)
-               if (ch [i] != readBuffer [offset])
-                   error ("required string", null, delim);
-           readBufferPos = offset;
-           
-       } else {
-           for (int i = 0; i < length; i++)
-               require (ch [i]);
-       }
-    }
-
-
-    /**
-     * Require a character to appear, or throw an exception.
-     */
-    private void require (char delim)
-    throws SAXException, IOException
-    {
-       char c = readCh ();
-
-       if (c != delim) {
-           error ("required character", c, new Character (delim).toString ());
-       }
-    }
-
-
-    /**
-     * Create an interned string from a character array.
-     * &AElig;lfred uses this method to create an interned version
-     * of all names and name tokens, so that it can test equality
-     * with <code>==</code> instead of <code>String.equals ()</code>.
-     *
-     * <p>This is much more efficient than constructing a non-interned
-     * string first, and then interning it.
-     *
-     * @param ch an array of characters for building the string.
-     * @param start the starting position in the array.
-     * @param length the number of characters to place in the string.
-     * @return an interned string.
-     * @see #intern (String)
-     * @see java.lang.String#intern
-     */
-    public String intern (char ch[], int start, int length)
-    {
-       int     index = 0;
-       int     hash = 0;
-       Object  bucket [];
-
-       // Generate a hash code.  This is a widely used string hash,
-       // often attributed to Brian Kernighan.
-       for (int i = start; i < start + length; i++)
-           hash = 31 * hash + ch [i];
-       hash = (hash & 0x7fffffff) % SYMBOL_TABLE_LENGTH;
-
-       // Get the bucket -- consists of {array,String} pairs
-       if ((bucket = symbolTable [hash]) == null) {
-           // first string in this bucket
-           bucket = new Object [8];
-
-       // Search for a matching tuple, and
-       // return the string if we find one.
-       } else {
-           while (index < bucket.length) {
-               char chFound [] = (char []) bucket [index];
-
-               // Stop when we hit an empty entry.
-               if (chFound == null)
-                   break;
-
-               // If they're the same length, check for a match.
-               if (chFound.length == length) {
-                   for (int i = 0; i < chFound.length; i++) {
-                       // continue search on failure
-                       if (ch [start + i] != chFound [i]) {
-                           break;
-                       } else if (i == length - 1) {
-                           // That's it, we have a match!
-                           return (String) bucket [index + 1];
-                       }
-                   }
-               }
-               index += 2;
-           }
-           // Not found -- we'll have to add it.
-
-           // Do we have to grow the bucket?
-           bucket = (Object []) extendArray (bucket, bucket.length, index);
-       }
-       symbolTable [hash] = bucket;
-
-       // OK, add it to the end of the bucket -- "local" interning.
-       // Intern "globally" to let applications share interning benefits.
-       // That is, "!=" and "==" work on our strings, not just equals().
-       String s = new String (ch, start, length).intern ();
-       bucket [index] = s.toCharArray ();
-       bucket [index + 1] = s;
-       return s;
-    }
-
-    /**
-     * Ensure the capacity of an array, allocating a new one if
-     * necessary.  Usually extends only for name hash collisions. 
-     */
-    private Object extendArray (Object array, int currentSize, int requiredSize)
-    {
-       if (requiredSize < currentSize) {
-           return array;
-       } else {
-           Object newArray = null;
-           int newSize = currentSize * 2;
-
-           if (newSize <= requiredSize)
-               newSize = requiredSize + 1;
-
-           if (array instanceof char[])
-               newArray = new char [newSize];
-           else if (array instanceof Object[])
-               newArray = new Object [newSize];
-           else
-               throw new RuntimeException ();
-
-           System.arraycopy (array, 0, newArray, 0, currentSize);
-           return newArray;
-       }
-    }
-
-
-    //////////////////////////////////////////////////////////////////////
-    // XML query routines.
-    //////////////////////////////////////////////////////////////////////
-
-
-    boolean isStandalone () { return docIsStandalone; }
-
-
-    //
-    // Elements
-    //
-
-    private int getContentType (Object element [], int defaultType)
-    {
-       int retval;
-
-       if (element == null)
-           return defaultType;
-       retval = ((Integer) element [0]).intValue ();
-       if (retval == CONTENT_UNDECLARED)
-           retval = defaultType;
-       return retval;
-    }
+  {
+    char c;
+    ExternalIdentifiers ids = new ExternalIdentifiers();
+    int flags = LIT_DISABLE_CREF | LIT_DISABLE_PE | LIT_DISABLE_EREF;
+    
+    if (tryRead("PUBLIC"))
+      {
+        requireWhitespace();
+        ids.publicId = readLiteral(LIT_NORMALIZE | LIT_PUBID | flags);
+        if (inNotation)
+          {
+            skipWhitespace();
+            c = readCh();
+            unread(c);
+            if (c == '"' || c == '\'')
+              {
+                ids.systemId = readLiteral(flags);
+              }
+          }
+        else
+          {
+            requireWhitespace();
+            ids.systemId = readLiteral(flags);
+          }
+        
+        for (int i = 0; i < ids.publicId.length(); i++)
+          {
+            c = ids.publicId.charAt(i);
+            if (c >= 'a' && c <= 'z')
+              {
+                continue;
+              }
+            if (c >= 'A' && c <= 'Z')
+              {
+                continue;
+              }
+            if (" \r\n0123456789-' ()+,./:=?;!*#@$_%".indexOf(c) != -1)
+              {
+                continue;
+              }
+            error("illegal PUBLIC id character U+"
+                  + Integer.toHexString(c));
+          }
+      }
+    else if (tryRead("SYSTEM"))
+      {
+        requireWhitespace();
+        ids.systemId = readLiteral(flags);
+      }
+    else if (!isSubset)
+      {
+        error("missing SYSTEM or PUBLIC keyword");
+      }
+      
+    if (ids.systemId != null)
+      {
+        if (ids.systemId.indexOf('#') != -1)
+          {
+            handler.verror("SYSTEM id has an URI fragment: " + ids.systemId);
+          }
+        ids.baseUri = handler.getSystemId();
+        if (ids.baseUri == null && uriWarnings)
+          {
+            handler.warn("No base URI; hope URI is absolute: "
+                         + ids.systemId);
+          }
+      }
+    
+    return ids;
+  }
 
+  /**
+   * Test if a character is whitespace.
+   * <pre>
+   * [3] S ::= (#x20 | #x9 | #xd | #xa)+
+   * </pre>
+   * @param c The character to test.
+   * @return true if the character is whitespace.
+   */
+  private final boolean isWhitespace(char c)
+  {
+    if (c > 0x20)
+      {
+        return false;
+      }
+    if (c == 0x20 || c == 0x0a || c == 0x09 || c == 0x0d)
+      {
+        return true;
+      }
+    return false;  // illegal ...
+  }
 
-    /**
-     * Look up the content type of an element.
-     * @param name The element type name.
-     * @return An integer constant representing the content type.
-     * @see #CONTENT_UNDECLARED
-     * @see #CONTENT_ANY
-     * @see #CONTENT_EMPTY
-     * @see #CONTENT_MIXED
-     * @see #CONTENT_ELEMENTS
-     */
-    public int getElementContentType (String name)
-    {
-       Object element [] = (Object []) elementInfo.get (name);
-       return getContentType (element, CONTENT_UNDECLARED);
-    }
+  //////////////////////////////////////////////////////////////////////
+  // Utility routines.
+  //////////////////////////////////////////////////////////////////////
+    
+  /**
+   * Add a character to the data buffer.
+   */
+  private void dataBufferAppend(char c)
+  {
+    // Expand buffer if necessary.
+    if (dataBufferPos >= dataBuffer.length)
+      {
+        dataBuffer = (char[]) extendArray(dataBuffer,
+                                          dataBuffer.length, dataBufferPos);
+      }
+    dataBuffer[dataBufferPos++] = c;
+  }
 
+  /**
+   * Add a string to the data buffer.
+   */
+  private void dataBufferAppend(String s)
+  {
+    dataBufferAppend(s.toCharArray(), 0, s.length());
+  }
 
-    /**
-     * Register an element.
-     * Array format:
-     *  [0] element type name
-     *  [1] content model (mixed, elements only)
-     *  [2] attribute hash table
-     */
-    private void setElement (
-       String          name,
-       int             contentType,
-       String          contentModel,
-       Hashtable       attributes
-    ) throws SAXException 
-    {
-       if (skippedPE)
-           return;
-
-       Object element [] = (Object []) elementInfo.get (name);
-
-       // first <!ELEMENT ...> or <!ATTLIST ...> for this type?
-       if (element == null) {
-           element = new Object [3];
-           element [0] = new Integer (contentType);
-           element [1] = contentModel;
-           element [2] = attributes;
-           elementInfo.put (name, element);
-           return;
-       }
-
-       // <!ELEMENT ...> declaration?
-       if (contentType != CONTENT_UNDECLARED) {
-           // ... following an associated <!ATTLIST ...>
-           if (((Integer) element [0]).intValue () == CONTENT_UNDECLARED) {
-               element [0] = new Integer (contentType);
-               element [1] = contentModel;
-           } else
-               // VC: Unique Element Type Declaration
-               handler.verror ("multiple declarations for element type: "
-                       + name);
-       }
-
-       // first <!ATTLIST ...>, before <!ELEMENT ...> ?
-       else if (attributes != null)
-           element [2] = attributes;
-    }
+  /**
+   * Append (part of) a character array to the data buffer.
+   */
+  private void dataBufferAppend(char[] ch, int start, int length)
+  {
+    dataBuffer = (char[]) extendArray(dataBuffer, dataBuffer.length,
+                                      dataBufferPos + length);
+    
+    System.arraycopy(ch, start, dataBuffer, dataBufferPos, length);
+    dataBufferPos += length;
+  }
 
+  /**
+   * Normalise space characters in the data buffer.
+   */
+  private void dataBufferNormalize()
+  {
+    int i = 0;
+    int j = 0;
+    int end = dataBufferPos;
+    
+    // Skip spaces at the start.
+    while (j < end && dataBuffer[j] == ' ')
+      {
+        j++;
+      }
+    
+    // Skip whitespace at the end.
+    while (end > j && dataBuffer[end - 1] == ' ')
+      {
+        end --;
+      }
 
-    /**
-     * Look up the attribute hash table for an element.
-     * The hash table is the second item in the element array.
-     */
-    private Hashtable getElementAttributes (String name)
-    {
-       Object element[] = (Object[]) elementInfo.get (name);
-       if (element == null)
-           return null;
-       else
-           return (Hashtable) element [2];
-    }
+    // Start copying to the left.
+    while (j < end)
+      {
+        
+        char c = dataBuffer[j++];
+        
+        // Normalise all other spaces to
+        // a single space.
+        if (c == ' ')
+          {
+            while (j < end && dataBuffer[j++] == ' ')
+              {
+                continue;
+              }
+            dataBuffer[i++] = ' ';
+            dataBuffer[i++] = dataBuffer[j - 1];
+          }
+        else
+          {
+            dataBuffer[i++] = c;
+          }
+      }
+    
+    // The new length is <= the old one.
+    dataBufferPos = i;
+  }
 
+  /**
+   * Convert the data buffer to a string.
+   */
+  private String dataBufferToString()
+  {
+    String s = new String(dataBuffer, 0, dataBufferPos);
+    dataBufferPos = 0;
+    return s;
+  }
 
+  /**
+   * Flush the contents of the data buffer to the handler, as
+   * appropriate, and reset the buffer for new input.
+   */
+  private void dataBufferFlush()
+    throws SAXException
+  {
+    if (currentElementContent == CONTENT_ELEMENTS
+        && dataBufferPos > 0
+        && !inCDATA)
+      {
+        // We can't just trust the buffer to be whitespace, there
+        // are (error) cases when it isn't
+        for (int i = 0; i < dataBufferPos; i++)
+          {
+            if (!isWhitespace(dataBuffer[i]))
+              {
+                handler.charData(dataBuffer, 0, dataBufferPos);
+                dataBufferPos = 0;
+              }
+          }
+        if (dataBufferPos > 0)
+          {
+            handler.ignorableWhitespace(dataBuffer, 0, dataBufferPos);
+            dataBufferPos = 0;
+          }
+      }
+    else if (dataBufferPos > 0)
+      {
+        handler.charData(dataBuffer, 0, dataBufferPos);
+        dataBufferPos = 0;
+      }
+  }
 
-    //
-    // Attributes
-    //
+  /**
+   * Require a string to appear, or throw an exception.
+   * <p><em>Precondition:</em> Entity expansion is not required.
+   * <p><em>Precondition:</em> data buffer has no characters that
+   * will get sent to the application.
+   */
+  private void require(String delim)
+    throws SAXException, IOException
+  {
+    int length = delim.length();
+    char[] ch;
+    
+    if (length < dataBuffer.length)
+      {
+        ch = dataBuffer;
+        delim.getChars(0, length, ch, 0);
+      }
+    else
+      {
+        ch = delim.toCharArray();
+      }
+      
+    if (USE_CHEATS && length <= (readBufferLength - readBufferPos))
+      {
+        int offset = readBufferPos;
+        
+        for (int i = 0; i < length; i++, offset++)
+          {
+            if (ch[i] != readBuffer[offset])
+              {
+                error ("required string", null, delim);
+              }
+          }
+        readBufferPos = offset;
+        
+      }
+    else
+      {
+        for (int i = 0; i < length; i++)
+          {
+            require(ch[i]);
+          }
+      }
+  }
 
-    /**
-     * Get the declared attributes for an element type.
-     * @param elname The name of the element type.
-     * @return An Enumeration of all the attributes declared for
-     *  a specific element type.  The results will be valid only
-     *  after the DTD (if any) has been parsed.
-     * @see #getAttributeType
-     * @see #getAttributeEnumeration
-     * @see #getAttributeDefaultValueType
-     * @see #getAttributeDefaultValue
-     * @see #getAttributeExpandedValue
-     */
-    private Enumeration declaredAttributes (Object element [])
-    {
-       Hashtable attlist;
+  /**
+   * Require a character to appear, or throw an exception.
+   */
+  private void require(char delim)
+    throws SAXException, IOException
+  {
+    char c = readCh();
+    
+    if (c != delim)
+      {
+        error("required character", c, new Character(delim).toString());
+      }
+  }
+  
+  /**
+   * Create an interned string from a character array.
+   * &AElig;lfred uses this method to create an interned version
+   * of all names and name tokens, so that it can test equality
+   * with <code>==</code> instead of <code>String.equals ()</code>.
+   *
+   * <p>This is much more efficient than constructing a non-interned
+   * string first, and then interning it.
+   *
+   * @param ch an array of characters for building the string.
+   * @param start the starting position in the array.
+   * @param length the number of characters to place in the string.
+   * @return an interned string.
+   * @see #intern (String)
+   * @see java.lang.String#intern
+   */
+  public String intern(char[] ch, int start, int length)
+  {
+    int index = 0;
+    int hash = 0;
+    Object[] bucket;
+
+    // Generate a hash code.  This is a widely used string hash,
+    // often attributed to Brian Kernighan.
+    for (int i = start; i < start + length; i++)
+      {
+        hash = 31 * hash + ch[i];
+      }
+    hash = (hash & 0x7fffffff) % SYMBOL_TABLE_LENGTH;
+    
+    // Get the bucket -- consists of {array,String} pairs
+    if ((bucket = symbolTable[hash]) == null)
+      {
+        // first string in this bucket
+        bucket = new Object[8];
+        
+        // Search for a matching tuple, and
+        // return the string if we find one.
+      }
+    else
+      {
+        while (index < bucket.length)
+          {
+            char[] chFound = (char[]) bucket[index];
+        
+            // Stop when we hit an empty entry.
+            if (chFound == null)
+              {
+                break;
+              }
+            
+            // If they're the same length, check for a match.
+            if (chFound.length == length)
+              {
+                for (int i = 0; i < chFound.length; i++)
+                  {
+                    // continue search on failure
+                    if (ch[start + i] != chFound[i])
+                      {
+                        break;
+                      }
+                    else if (i == length - 1)
+                      {
+                        // That's it, we have a match!
+                        return (String) bucket[index + 1];
+                      }
+                  }
+              }
+            index += 2;
+          }
+        // Not found -- we'll have to add it.
+        
+        // Do we have to grow the bucket?
+        bucket = (Object[]) extendArray(bucket, bucket.length, index);
+      }
+    symbolTable[hash] = bucket;
+    
+    // OK, add it to the end of the bucket -- "local" interning.
+    // Intern "globally" to let applications share interning benefits.
+    // That is, "!=" and "==" work on our strings, not just equals().
+    String s = new String(ch, start, length).intern();
+    bucket[index] = s.toCharArray();
+    bucket[index + 1] = s;
+    return s;
+  }
 
-       if (element == null)
-           return null;
-       if ((attlist = (Hashtable) element [2]) == null)
-           return null;
-       return attlist.keys ();
-    }
+  /**
+   * Ensure the capacity of an array, allocating a new one if
+   * necessary.  Usually extends only for name hash collisions. 
+   */
+  private Object extendArray(Object array, int currentSize, int requiredSize)
+  {
+    if (requiredSize < currentSize)
+      {
+        return array;
+      }
+    else
+      {
+        Object newArray = null;
+        int newSize = currentSize * 2;
+        
+        if (newSize <= requiredSize)
+          {
+            newSize = requiredSize + 1;
+          }
+        
+        if (array instanceof char[])
+          {
+            newArray = new char[newSize];
+          }
+        else if (array instanceof Object[])
+          {
+            newArray = new Object[newSize];
+          }
+        else
+          {
+            throw new RuntimeException();
+          }
+        
+        System.arraycopy(array, 0, newArray, 0, currentSize);
+        return newArray;
+      }
+  }
 
-    /**
-     * Get the declared attributes for an element type.
-     * @param elname The name of the element type.
-     * @return An Enumeration of all the attributes declared for
-     *  a specific element type.  The results will be valid only
-     *  after the DTD (if any) has been parsed.
-     * @see #getAttributeType
-     * @see #getAttributeEnumeration
-     * @see #getAttributeDefaultValueType
-     * @see #getAttributeDefaultValue
-     * @see #getAttributeExpandedValue
-     */
-    public Enumeration declaredAttributes (String elname)
-    {
-       return declaredAttributes ((Object []) elementInfo.get (elname));
-    }
+  //////////////////////////////////////////////////////////////////////
+  // XML query routines.
+  //////////////////////////////////////////////////////////////////////
+  
+  boolean isStandalone()
+  {
+    return docIsStandalone;
+  }
+    
+  //
+  // Elements
+  //
+  
+  private int getContentType(ElementDecl element, int defaultType)
+  {
+    int retval;
+    
+    if (element == null)
+      {
+        return defaultType;
+      }
+    retval = element.contentType;
+    if (retval == CONTENT_UNDECLARED)
+      {
+        retval = defaultType;
+      }
+    return retval;
+  }
+
+  /**
+   * Look up the content type of an element.
+   * @param name The element type name.
+   * @return An integer constant representing the content type.
+   * @see #CONTENT_UNDECLARED
+   * @see #CONTENT_ANY
+   * @see #CONTENT_EMPTY
+   * @see #CONTENT_MIXED
+   * @see #CONTENT_ELEMENTS
+   */
+  public int getElementContentType(String name)
+  {
+    ElementDecl element = (ElementDecl) elementInfo.get(name);
+    return getContentType(element, CONTENT_UNDECLARED);
+  }
+  
+  /**
+   * Register an element.
+   * Array format:
+   *  [0] element type name
+   *  [1] content model (mixed, elements only)
+   *  [2] attribute hash table
+   */
+  private void setElement(String name, int contentType,
+                          String contentModel, HashMap attributes)
+    throws SAXException
+  {
+    if (skippedPE)
+      {
+        return;
+      }
 
+    ElementDecl element = (ElementDecl) elementInfo.get(name);
+    
+    // first <!ELEMENT ...> or <!ATTLIST ...> for this type?
+    if (element == null)
+      {
+        element = new ElementDecl();
+        element.contentType = contentType;
+        element.contentModel = contentModel;
+        element.attributes = attributes;
+        elementInfo.put(name, element);
+        return;
+      }
+    
+    // <!ELEMENT ...> declaration?
+    if (contentType != CONTENT_UNDECLARED)
+      {
+        // ... following an associated <!ATTLIST ...>
+        if (element.contentType == CONTENT_UNDECLARED)
+          {
+            element.contentType = contentType;
+            element.contentModel = contentModel;
+          }
+        else
+          {
+            // VC: Unique Element Type Declaration
+            handler.verror("multiple declarations for element type: "
+                           + name);
+          }
+      }
+    
+    // first <!ATTLIST ...>, before <!ELEMENT ...> ?
+    else if (attributes != null)
+      {
+        element.attributes = attributes;
+      }
+  }
+  
+  /**
+   * Look up the attribute hash table for an element.
+   * The hash table is the second item in the element array.
+   */
+  private HashMap getElementAttributes(String name)
+  {
+    ElementDecl element = (ElementDecl) elementInfo.get(name);
+    return (element == null) ? null : element.attributes;
+  }
 
-    /**
-     * Retrieve the declared type of an attribute.
-     * @param name The name of the associated element.
-     * @param aname The name of the attribute.
-     * @return An interend string denoting the type, or null
-     * indicating an undeclared attribute.
-     */
-    public String getAttributeType (String name, String aname)
-    {
-       Object attribute[] = getAttribute (name, aname);
-       if (attribute == null) {
-           return null;
-       } else {
-           return (String) attribute [0];
-       }
-    }
+  //
+  // Attributes
+  //
+  
+  /**
+   * Get the declared attributes for an element type.
+   * @param elname The name of the element type.
+   * @return An iterator over all the attributes declared for
+   *   a specific element type.  The results will be valid only
+   *   after the DTD (if any) has been parsed.
+   * @see #getAttributeType
+   * @see #getAttributeEnumeration
+   * @see #getAttributeDefaultValueType
+   * @see #getAttributeDefaultValue
+   * @see #getAttributeExpandedValue
+   */
+  private Iterator declaredAttributes(ElementDecl element)
+  {
+    HashMap attlist;
+    
+    if (element == null)
+      {
+        return null;
+      }
+    if ((attlist = element.attributes) == null)
+      {
+        return null;
+      }
+    return attlist.keySet().iterator();
+  }
 
+  /**
+   * Get the declared attributes for an element type.
+   * @param elname The name of the element type.
+   * @return An iterator over all the attributes declared for
+   *   a specific element type.  The results will be valid only
+   *   after the DTD (if any) has been parsed.
+   * @see #getAttributeType
+   * @see #getAttributeEnumeration
+   * @see #getAttributeDefaultValueType
+   * @see #getAttributeDefaultValue
+   * @see #getAttributeExpandedValue
+   */
+  public Iterator declaredAttributes(String elname)
+  {
+    return declaredAttributes((ElementDecl) elementInfo.get(elname));
+  }
 
-    /**
-     * Retrieve the allowed values for an enumerated attribute type.
-     * @param name The name of the associated element.
-     * @param aname The name of the attribute.
-     * @return A string containing the token list.
-     */
-    public String getAttributeEnumeration (String name, String aname)
-    {
-       Object attribute[] = getAttribute (name, aname);
-       if (attribute == null) {
-           return null;
-       } else {
-           // assert:  attribute [0] is "ENUMERATION" or "NOTATION"
-           return (String) attribute [3];
-       }
-    }
+  /**
+   * Retrieve the declared type of an attribute.
+   * @param name The name of the associated element.
+   * @param aname The name of the attribute.
+   * @return An interend string denoting the type, or null
+   *  indicating an undeclared attribute.
+   */
+  public String getAttributeType(String name, String aname)
+  {
+    AttributeDecl attribute = getAttribute(name, aname);
+    return (attribute == null) ? null : attribute.type;
+  }
 
+  /**
+   * Retrieve the allowed values for an enumerated attribute type.
+   * @param name The name of the associated element.
+   * @param aname The name of the attribute.
+   * @return A string containing the token list.
+   */
+  public String getAttributeEnumeration(String name, String aname)
+  {
+    AttributeDecl attribute = getAttribute(name, aname);
+    // assert:  attribute.enumeration is "ENUMERATION" or "NOTATION"
+    return (attribute == null) ? null : attribute.enumeration;
+  }
 
-    /**
-     * Retrieve the default value of a declared attribute.
-     * @param name The name of the associated element.
-     * @param aname The name of the attribute.
-     * @return The default value, or null if the attribute was
-     *  #IMPLIED or simply undeclared and unspecified.
-     * @see #getAttributeExpandedValue
-     */
-    public String getAttributeDefaultValue (String name, String aname)
-    {
-       Object attribute[] = getAttribute (name, aname);
-       if (attribute == null) {
-           return null;
-       } else {
-           return (String) attribute [1];
-       }
-    }
+  /**
+   * Retrieve the default value of a declared attribute.
+   * @param name The name of the associated element.
+   * @param aname The name of the attribute.
+   * @return The default value, or null if the attribute was
+   *   #IMPLIED or simply undeclared and unspecified.
+   * @see #getAttributeExpandedValue
+   */
+  public String getAttributeDefaultValue(String name, String aname)
+  {
+    AttributeDecl attribute = getAttribute(name, aname);
+    return (attribute == null) ? null : attribute.value;
+  }
 
     /*
 
@@ -3325,1789 +3940,1896 @@ loop:
      * @param name The name of the associated element.
      * @param aname The name of the attribute.
      * @return The expanded default value, or null if the attribute was
-     *  #IMPLIED or simply undeclared
+     *   #IMPLIED or simply undeclared
      * @see #getAttributeDefaultValue
     public String getAttributeExpandedValue (String name, String aname)
     throws Exception
     {
-       Object attribute[] = getAttribute (name, aname);
-
-       if (attribute == null) {
-           return null;
-       } else if (attribute [4] == null && attribute [1] != null) {
-           // we MUST use the same buf for both quotes else the literal
-           // can't be properly terminated
-           char buf [] = new char [1];
-           int flags = LIT_ENTITY_REF | LIT_ATTRIBUTE;
-           String type = getAttributeType (name, aname);
-
-           if (type != "CDATA" && type != null)
-               flags |= LIT_NORMALIZE;
-           buf [0] = '"';
-           pushCharArray (null, buf, 0, 1);
-           pushString (null, (String) attribute [1]);
-           pushCharArray (null, buf, 0, 1);
-           attribute [4] = readLiteral (flags);
-       }
-       return (String) attribute [4];
+  AttributeDecl attribute = getAttribute (name, aname);
+
+  if (attribute == null) {
+      return null;
+  } else if (attribute.defaultValue == null && attribute.value != null) {
+      // we MUST use the same buf for both quotes else the literal
+      // can't be properly terminated
+      char buf [] = new char [1];
+      int  flags = LIT_ENTITY_REF | LIT_ATTRIBUTE;
+      String type = getAttributeType (name, aname);
+
+      if (type != "CDATA" && type != null)
+    flags |= LIT_NORMALIZE;
+      buf [0] = '"';
+      pushCharArray (null, buf, 0, 1);
+      pushString (null, attribute.value);
+      pushCharArray (null, buf, 0, 1);
+      attribute.defaultValue = readLiteral (flags);
+  }
+  return attribute.defaultValue;
     }
      */
 
-    /**
-     * Retrieve the default value mode of a declared attribute.
-     * @see #ATTRIBUTE_DEFAULT_SPECIFIED
-     * @see #ATTRIBUTE_DEFAULT_IMPLIED
-     * @see #ATTRIBUTE_DEFAULT_REQUIRED
-     * @see #ATTRIBUTE_DEFAULT_FIXED
-     */
-    public int getAttributeDefaultValueType (String name, String aname)
-    {
-       Object attribute[] = getAttribute (name, aname);
-       if (attribute == null) {
-           return ATTRIBUTE_DEFAULT_UNDECLARED;
-       } else {
-           return ((Integer) attribute [2]).intValue ();
-       }
-    }
-
-
-    /**
-     * Register an attribute declaration for later retrieval.
-     * Format:
-     * - String type
-     * - String default value
-     * - int value type
-     * - enumeration
-     * - processed default value
-     */
-    private void setAttribute (String elName, String name, String type,
-                       String enumeration,
-                       String value, int valueType)
+  /**
+   * Retrieve the default value mode of a declared attribute.
+   * @see #ATTRIBUTE_DEFAULT_SPECIFIED
+   * @see #ATTRIBUTE_DEFAULT_IMPLIED
+   * @see #ATTRIBUTE_DEFAULT_REQUIRED
+   * @see #ATTRIBUTE_DEFAULT_FIXED
+   */
+  public int getAttributeDefaultValueType(String name, String aname)
+  {
+    AttributeDecl attribute = getAttribute(name, aname);
+    return (attribute == null) ? ATTRIBUTE_DEFAULT_UNDECLARED :
+      attribute.valueType;
+  }  
+  
+  /**
+   * Register an attribute declaration for later retrieval.
+   * Format:
+   * - String type
+   * - String default value
+   * - int value type
+   * - enumeration
+   * - processed default value
+   */
+  private void setAttribute(String elName, String name, String type,
+                            String enumeration, String value, int valueType)
     throws Exception
-    {
-       Hashtable attlist;
-
-       if (skippedPE)
-           return;
-
-       // Create a new hashtable if necessary.
-       attlist = getElementAttributes (elName);
-       if (attlist == null)
-           attlist = new Hashtable ();
-
-       // ignore multiple attribute declarations!
-       if (attlist.get (name) != null) {
-           // warn ...
-           return;
-       } else {
-           Object attribute [] = new Object [5];
-           attribute [0] = type;
-           attribute [1] = value;
-           attribute [2] = new Integer (valueType);
-           attribute [3] = enumeration;
-           attribute [4] = null;
-           attlist.put (name, attribute);
-
-           // save; but don't overwrite any existing <!ELEMENT ...>
-           setElement (elName, CONTENT_UNDECLARED, null, attlist);
-       }
-    }
+  {
+    HashMap attlist;
+    
+    if (skippedPE)
+      {
+        return;
+      }
+    
+    // Create a new hashtable if necessary.
+    attlist = getElementAttributes(elName);
+    if (attlist == null)
+      {
+        attlist = new HashMap();
+      }
+    
+    // ignore multiple attribute declarations!
+    if (attlist.get(name) != null)
+      {
+        // warn ...
+        return;
+      }
+    else
+      {
+        AttributeDecl attribute = new AttributeDecl();
+        attribute.type = type;
+        attribute.value = value;
+        attribute.valueType = valueType;
+        attribute.enumeration = enumeration;
+        attlist.put(name, attribute);
+      
+        // save; but don't overwrite any existing <!ELEMENT ...>
+        setElement(elName, CONTENT_UNDECLARED, null, attlist);
+      }
+  }
 
+  /**
+   * Retrieve the attribute declaration for the given element name and name.
+   */
+  private AttributeDecl getAttribute(String elName, String name)
+  {
+    HashMap attlist = getElementAttributes(elName);
+    return (attlist == null) ? null : (AttributeDecl) attlist.get(name);
+  }
 
-    /**
-     * Retrieve the array representing an attribute declaration.
-     */
-    private Object[] getAttribute (String elName, String name)
-    {
-       Hashtable attlist;
+  //
+  // Entities
+  //
+  
+  /**
+   * Find the type of an entity.
+   * @returns An integer constant representing the entity type.
+   * @see #ENTITY_UNDECLARED
+   * @see #ENTITY_INTERNAL
+   * @see #ENTITY_NDATA
+   * @see #ENTITY_TEXT
+   */
+  public int getEntityType(String ename)
+  {
+    EntityInfo entity = (EntityInfo) entityInfo.get(ename);
+    return (entity == null) ?  ENTITY_UNDECLARED : entity.type;
+  }
 
-       attlist = getElementAttributes (elName);
-       if (attlist == null)
-           return null;
-       return (Object[]) attlist.get (name);
-    }
+  /**
+   * Return an external entity's identifiers.
+   * @param ename The name of the external entity.
+   * @return The entity's public identifier, system identifier, and base URI.
+   *  Null if the entity was not declared as an external entity.
+   * @see #getEntityType
+   */
+  public ExternalIdentifiers getEntityIds(String ename)
+  {
+    EntityInfo entity = (EntityInfo) entityInfo.get(ename);
+    return (entity == null) ? null : entity.ids;
+  }
 
+  /**
+   * Return an internal entity's replacement text.
+   * @param ename The name of the internal entity.
+   * @return The entity's replacement text, or null if
+   *   the entity was not declared as an internal entity.
+   * @see #getEntityType
+   */
+  public String getEntityValue(String ename)
+  {
+    EntityInfo entity = (EntityInfo) entityInfo.get(ename);
+    return (entity == null) ? null : entity.value;
+  }
 
-    //
-    // Entities
-    //
+  /**
+   * Register an entity declaration for later retrieval.
+   */
+  private void setInternalEntity(String eName, String value)
+    throws SAXException
+  {
+    if (skippedPE)
+      {
+        return;
+      }
 
-    /**
-     * Find the type of an entity.
-     * @returns An integer constant representing the entity type.
-     * @see #ENTITY_UNDECLARED
-     * @see #ENTITY_INTERNAL
-     * @see #ENTITY_NDATA
-     * @see #ENTITY_TEXT
-     */
-    public int getEntityType (String ename)
-    {
-       Object entity[] = (Object[]) entityInfo.get (ename);
-       if (entity == null) {
-           return ENTITY_UNDECLARED;
-       } else {
-           return ((Integer) entity [0]).intValue ();
-       }
-    }
+    if (entityInfo.get(eName) == null)
+      {
+        EntityInfo entity = new EntityInfo();
+        entity.type = ENTITY_INTERNAL;
+        entity.value = value;
+        entityInfo.put(eName, entity);
+      }
+    if (handler.stringInterning)
+      {
+        if ("lt" == eName || "gt" == eName || "quot" == eName
+            || "apos" == eName || "amp" == eName)
+          {
+            return;
+          }
+      }
+    else
+      {
+        if ("lt".equals(eName) || "gt".equals(eName) || "quot".equals(eName)
+            || "apos".equals(eName) || "amp".equals(eName))
+          {
+            return;
+          }
+      }
+    handler.getDeclHandler().internalEntityDecl(eName, value);
+  }
 
+  /**
+   * Register an external entity declaration for later retrieval.
+   */
+  private void setExternalEntity(String eName, int eClass,
+                                 ExternalIdentifiers ids, String nName)
+  {
+    if (entityInfo.get(eName) == null)
+      {
+        EntityInfo entity = new EntityInfo();
+        entity.type = eClass;
+        entity.ids = ids;
+        entity.notationName = nName;
+        entityInfo.put(eName, entity);
+      }
+  }
 
-    /**
-     * Return an external entity's identifier array.
-     * @param ename The name of the external entity.
-     * @return Three element array containing (in order) the entity's
-     * public identifier, system identifier, and base URI.  Null if
-     *  the entity was not declared as an external entity.
-     * @see #getEntityType
-     */
-    public String [] getEntityIds (String ename)
-    {
-       Object entity[] = (Object[]) entityInfo.get (ename);
-       if (entity == null) {
-           return null;
-       } else {
-           return (String []) entity [1];
-       }
-    }
+  //
+  // Notations.
+  //
+  
+  /**
+   * Report a notation declaration, checking for duplicates.
+   */
+  private void setNotation(String nname, ExternalIdentifiers ids)
+    throws SAXException
+  {
+    if (skippedPE)
+      {
+        return;
+      }
+    
+    handler.notationDecl(nname, ids.publicId, ids.systemId, ids.baseUri);
+    if (notationInfo.get(nname) == null)
+      {
+        notationInfo.put(nname, nname);
+      }
+    else
+      {
+        // VC: Unique Notation Name
+        handler.verror("Duplicate notation name decl: " + nname);
+      }
+  }
+  
+  //
+  // Location.
+  //
+  
+  /**
+   * Return the current line number.
+   */
+  public int getLineNumber()
+  {
+    return line;
+  }
+
+  /**
+   * Return the current column number.
+   */
+  public int getColumnNumber()
+  {
+    return column;
+  }
 
+  //////////////////////////////////////////////////////////////////////
+  // High-level I/O.
+  //////////////////////////////////////////////////////////////////////
+  
+  /**
+   * Read a single character from the readBuffer.
+   * <p>The readDataChunk () method maintains the buffer.
+   * <p>If we hit the end of an entity, try to pop the stack and
+   * keep going.
+   * <p> (This approach doesn't really enforce XML's rules about
+   * entity boundaries, but this is not currently a validating
+   * parser).
+   * <p>This routine also attempts to keep track of the current
+   * position in external entities, but it's not entirely accurate.
+   * @return The next available input character.
+   * @see #unread (char)
+   * @see #readDataChunk
+   * @see #readBuffer
+   * @see #line
+   * @return The next character from the current input source.
+   */
+  private char readCh()
+    throws SAXException, IOException
+  {
+    // As long as there's nothing in the
+    // read buffer, try reading more data
+    // (for an external entity) or popping
+    // the entity stack (for either).
+    while (readBufferPos >= readBufferLength)
+      {
+        switch (sourceType)
+          {
+          case INPUT_READER:
+          case INPUT_STREAM:
+            readDataChunk();
+            while (readBufferLength < 1)
+              {
+                popInput();
+                if (readBufferLength < 1)
+                  {
+                    readDataChunk();
+                  }
+              }
+            break;
+            
+          default:
+            
+            popInput();
+            break;
+          }
+      }
+    
+    char c = readBuffer[readBufferPos++];
+    
+    if (c == '\n')
+      {
+        line++;
+        column = 0;
+      }
+    else
+      {
+        if (c == '<')
+          {
+            /* the most common return to parseContent () ... NOP */
+          }
+        else if (((c < 0x0020 && (c != '\t') && (c != '\r')) || c > 0xFFFD)
+                 || ((c >= 0x007f) && (c <= 0x009f) && (c != 0x0085) 
+                     && xmlVersion == XML_11))
+          {
+            error("illegal XML character U+" + Integer.toHexString(c));
+          }
 
-    /**
-     * Return an internal entity's replacement text.
-     * @param ename The name of the internal entity.
-     * @return The entity's replacement text, or null if
-     *  the entity was not declared as an internal entity.
-     * @see #getEntityType
-     */
-    public String getEntityValue (String ename)
-    {
-       Object entity[] = (Object[]) entityInfo.get (ename);
-       if (entity == null) {
-           return null;
-       } else {
-           return (String) entity [3];
-       }
-    }
+        // If we're in the DTD and in a context where PEs get expanded,
+        // do so ... 1/14/2000 errata identify those contexts.  There
+        // are also spots in the internal subset where PE refs are fatal
+        // errors, hence yet another flag.
+        else if (c == '%' && expandPE)
+          {
+            if (peIsError)
+              {
+                error("PE reference within decl in internal subset.");
+              }
+            parsePEReference();
+            return readCh();
+          }
+        column++;
+      }
 
+    return c;
+  }
 
-    /**
-     * Register an entity declaration for later retrieval.
-     */
-    private void setInternalEntity (String eName, String value)
+  /**
+   * Push a single character back onto the current input stream.
+   * <p>This method usually pushes the character back onto
+   * the readBuffer.
+   * <p>I don't think that this would ever be called with 
+   * readBufferPos = 0, because the methods always reads a character
+   * before unreading it, but just in case, I've added a boundary
+   * condition.
+   * @param c The character to push back.
+   * @see #readCh
+   * @see #unread (char[])
+   * @see #readBuffer
+   */
+  private void unread(char c)
     throws SAXException
-    {
-       if (skippedPE)
-           return;
-
-       if (entityInfo.get (eName) == null) {
-           Object entity[] = new Object [5];
-           entity [0] = new Integer (ENTITY_INTERNAL);
-// FIXME: shrink!!  [2] useless
-           entity [3] = value;
-           entityInfo.put (eName, entity);
-       }
-  if (handler.getFeature (SAXDriver.FEATURE + "string-interning")) {
-    if ("lt" == eName || "gt" == eName || "quot" == eName
-        || "apos" == eName || "amp" == eName)
-           return;
-  } else {
-    if ("lt".equals(eName) || "gt".equals(eName) || "quot".equals(eName)
-        || "apos".equals(eName) || "amp".equals(eName))
-           return;
+  {
+    // Normal condition.
+    if (c == '\n')
+      {
+        line--;
+        column = -1;
+      }
+    if (readBufferPos > 0)
+      {
+        readBuffer[--readBufferPos] = c;
+      }
+    else
+      {
+        pushString(null, new Character(c).toString());
+      }
   }
-       handler.getDeclHandler ()
-           .internalEntityDecl (eName, value);
-    }
-
-
-    /**
-     * Register an external entity declaration for later retrieval.
-     */
-    private void setExternalEntity (String eName, int eClass,
-                    String ids [], String nName)
-    {
-       if (entityInfo.get (eName) == null) {
-           Object entity[] = new Object [5];
-           entity [0] = new Integer (eClass);
-           entity [1] = ids;
-// FIXME: shrink!!  [2] no longer used, [4] irrelevant given [0]
-           entity [4] = nName;
-           entityInfo.put (eName, entity);
-       }
-    }
-
-
-    //
-    // Notations.
-    //
 
-    /**
-     * Report a notation declaration, checking for duplicates.
-     */
-    private void setNotation (String nname, String ids [])
+  /**
+   * Push a char array back onto the current input stream.
+   * <p>NOTE: you must <em>never</em> push back characters that you
+   * haven't actually read: use pushString () instead.
+   * @see #readCh
+   * @see #unread (char)
+   * @see #readBuffer
+   * @see #pushString
+   */
+  private void unread(char[] ch, int length)
     throws SAXException
-    {
-       if (skippedPE)
-           return;
-
-       handler.notationDecl (nname, ids);
-       if (notationInfo.get (nname) == null)
-           notationInfo.put (nname, nname);
-       else
-           // VC: Unique Notation Name
-           handler.verror ("Duplicate notation name decl: " + nname);
-    }
-
-
-    //
-    // Location.
-    //
-
-
-    /**
-     * Return the current line number.
-     */
-    public int getLineNumber ()
-    {
-       return line;
-    }
-
-
-    /**
-     * Return the current column number.
-     */
-    public int getColumnNumber ()
-    {
-       return column;
-    }
-
+  {
+    for (int i = 0; i < length; i++)
+      {
+        if (ch[i] == '\n')
+          {
+            line--;
+            column = -1;
+          }
+      }
+    if (length < readBufferPos)
+      {
+        readBufferPos -= length;
+      }
+    else
+      {
+        pushCharArray(null, ch, 0, length);
+      }
+  }
 
-    //////////////////////////////////////////////////////////////////////
-    // High-level I/O.
-    //////////////////////////////////////////////////////////////////////
-
-
-    /**
-     * Read a single character from the readBuffer.
-     * <p>The readDataChunk () method maintains the buffer.
-     * <p>If we hit the end of an entity, try to pop the stack and
-     * keep going.
-     * <p> (This approach doesn't really enforce XML's rules about
-     * entity boundaries, but this is not currently a validating
-     * parser).
-     * <p>This routine also attempts to keep track of the current
-     * position in external entities, but it's not entirely accurate.
-     * @return The next available input character.
-     * @see #unread (char)
-     * @see #readDataChunk
-     * @see #readBuffer
-     * @see #line
-     * @return The next character from the current input source.
-     */
-    private char readCh ()
+  /**
+   * Push, or skip, a new external input source.
+   * The source will be some kind of parsed entity, such as a PE
+   * (including the external DTD subset) or content for the body.
+   *
+   * @param url The java.net.URL object for the entity.
+   * @see SAXDriver#resolveEntity
+   * @see #pushString
+   * @see #sourceType
+   * @see #pushInput
+   * @see #detectEncoding
+   * @see #sourceType
+   * @see #readBuffer
+   */
+  private void pushURL(boolean isPE,
+                       String ename,
+                       ExternalIdentifiers ids,
+                       Reader reader,
+                       InputStream stream,
+                       String encoding,
+                       boolean doResolve)
     throws SAXException, IOException
-    {
-       // As long as there's nothing in the
-       // read buffer, try reading more data
-       // (for an external entity) or popping
-       // the entity stack (for either).
-       while (readBufferPos >= readBufferLength) {
-           switch (sourceType) {
-           case INPUT_READER:
-           case INPUT_STREAM:
-               readDataChunk ();
-               while (readBufferLength < 1) {
-                   popInput ();
-                   if (readBufferLength < 1) {
-                       readDataChunk ();
-                   }
-               }
-               break;
-
-           default:
-
-               popInput ();
-               break;
-           }
-       }
-
-       char c = readBuffer [readBufferPos++];
-       
-       if (c == '\n') {
-           line++;
-           column = 0;
-       } else {
-           if (c == '<') {
-               /* the most common return to parseContent () ... NOP */
-           } else if (((c < 0x0020 && (c != '\t') && (c != '\r')) || c > 0xFFFD)
-                       || ((c >= 0x007f) && (c <= 0x009f) && (c != 0x0085) 
-                          && xmlVersion == XML_11)) 
-               error ("illegal XML character U+"
-                       + Integer.toHexString (c));
-
-           // If we're in the DTD and in a context where PEs get expanded,
-           // do so ... 1/14/2000 errata identify those contexts.  There
-           // are also spots in the internal subset where PE refs are fatal
-           // errors, hence yet another flag.
-           else if (c == '%' && expandPE) {
-               if (peIsError)
-                   error ("PE reference within decl in internal subset.");
-               parsePEReference ();
-               return readCh ();
-           }
-           column++;
-       }
-
-       return c;
-    }
+  {
+    boolean ignoreEncoding;
+    String systemId;
+    InputSource source;
 
+    if (!isPE)
+      {
+        dataBufferFlush();
+      }
 
-    /**
-     * Push a single character back onto the current input stream.
-     * <p>This method usually pushes the character back onto
-     * the readBuffer.
-     * <p>I don't think that this would ever be called with 
-     * readBufferPos = 0, because the methods always reads a character
-     * before unreading it, but just in case, I've added a boundary
-     * condition.
-     * @param c The character to push back.
-     * @see #readCh
-     * @see #unread (char[])
-     * @see #readBuffer
-     */
-    private void unread (char c)
-    throws SAXException
-    {
-       // Normal condition.
-       if (c == '\n') {
-           line--;
-           column = -1;
-       }
-       if (readBufferPos > 0) {
-           readBuffer [--readBufferPos] = c;
-       } else {
-           pushString (null, new Character (c).toString ());
-       }
-    }
+    scratch.setPublicId(ids.publicId);
+    scratch.setSystemId(ids.systemId);
+
+    // See if we should skip or substitute the entity.
+    // If we're not skipping, resolving reports startEntity()
+    // and updates the (handler's) stack of URIs.
+    if (doResolve)
+      {
+        // assert (stream == null && reader == null && encoding == null)
+        source = handler.resolveEntity(isPE, ename, scratch, ids.baseUri);
+        if (source == null)
+          {
+            handler.warn("skipping entity: " + ename);
+            handler.skippedEntity(ename);
+            if (isPE)
+              {
+                skippedPE = true;
+              }
+            return;
+          }
 
+        // we might be using alternate IDs/encoding
+        systemId = source.getSystemId();
+        // The following warning and setting systemId was deleted bcause
+        // the application has the option of not setting systemId
+        // provided that it has set the characte/byte stream.
+        /*
+           if (systemId == null) {
+           handler.warn ("missing system ID, using " + ids.systemId);
+           systemId = ids.systemId;
+           }
+         */
+      }
+    else
+      {
+        // "[document]", or "[dtd]" via getExternalSubset()
+        scratch.setCharacterStream(reader);
+        scratch.setByteStream(stream);
+        scratch.setEncoding(encoding);
+        source = scratch;
+        systemId = ids.systemId;
+        if (handler.stringInterning)
+          {
+            handler.startExternalEntity(ename, systemId,
+                                        "[document]" == ename);
+          }
+        else
+          {
+            handler.startExternalEntity(ename, systemId,
+                                        "[document]".equals(ename));
+          }
+      }
 
-    /**
-     * Push a char array back onto the current input stream.
-     * <p>NOTE: you must <em>never</em> push back characters that you
-     * haven't actually read: use pushString () instead.
-     * @see #readCh
-     * @see #unread (char)
-     * @see #readBuffer
-     * @see #pushString
-     */
-    private void unread (char ch[], int length)
-    throws SAXException
-    {
-       for (int i = 0; i < length; i++) {
-           if (ch [i] == '\n') {
-               line--;
-               column = -1;
-           }
-       }
-       if (length < readBufferPos) {
-           readBufferPos -= length;
-       } else {
-           pushCharArray (null, ch, 0, length);
-       }
-    }
+    // we may have been given I/O streams directly
+    if (source.getCharacterStream() != null)
+      {
+        if (source.getByteStream() != null)
+          error("InputSource has two streams!");
+        reader = source.getCharacterStream();
+      }
+    else if (source.getByteStream() != null)
+      {
+        encoding = source.getEncoding();
+        if (encoding == null)
+          {
+            stream = source.getByteStream();
+          }
+        else
+          {
+            try
+              {
+                reader = new InputStreamReader(source.getByteStream(),
+                                               encoding);
+              }
+            catch (IOException e)
+              {
+                stream = source.getByteStream();
+              }
+          }
+      }
+    else if (systemId == null)
+      {
+        error("InputSource has no URI!");
+      }
+    scratch.setCharacterStream(null);
+    scratch.setByteStream(null);
+    scratch.setEncoding(null);
+    
+    // Push the existing status.
+    pushInput(ename);
+
+    // Create a new read buffer.
+    // (Note the four-character margin)
+    readBuffer = new char[READ_BUFFER_MAX + 4];
+    readBufferPos = 0;
+    readBufferLength = 0;
+    readBufferOverflow = -1;
+    is = null;
+    line = 1;
+    column = 0;
+    currentByteCount = 0;
+
+    // If there's an explicit character stream, just
+    // ignore encoding declarations.
+    if (reader != null)
+      {
+        sourceType = INPUT_READER;
+        this.reader = reader;
+        tryEncodingDecl(true);
+        return;
+      }
+  
+    // Else we handle the conversion, and need to ensure
+    // it's done right.
+    sourceType = INPUT_STREAM;
+    if (stream != null)
+      {
+        is = stream;
+      }
+    else
+      {
+        // We have to open our own stream to the URL.
+        URL url = new URL(systemId);
+        
+        externalEntity = url.openConnection();
+        externalEntity.connect();
+        is = externalEntity.getInputStream();
+      }
+    
+    // If we get to here, there must be
+    // an InputStream available.
+    if (!is.markSupported())
+      {
+        is = new BufferedInputStream(is);
+      }
 
+    // Get any external encoding label.
+    if (encoding == null && externalEntity != null)
+      {
+        // External labels can be untrustworthy; filesystems in
+        // particular often have the wrong default for content
+        // that wasn't locally originated.  Those we autodetect.
+        if (!"file".equals(externalEntity.getURL().getProtocol()))
+          {
+            int temp;
+          
+            // application/xml;charset=something;otherAttr=...
+            // ... with many variants on 'something'
+            encoding = externalEntity.getContentType();
+          
+            // MHK code (fix for Saxon 5.5.1/007):
+            // protect against encoding==null
+            if (encoding == null)
+              {
+                temp = -1;
+              }
+            else
+              {
+                temp = encoding.indexOf("charset");
+              }
+          
+            // RFC 2376 sez MIME text defaults to ASCII, but since the
+            // JDK will create a MIME type out of thin air, we always
+            // autodetect when there's no explicit charset attribute.
+            if (temp < 0)
+              {
+                encoding = null;  // autodetect
+              }
+            else
+              {
+                // only this one attribute
+                if ((temp = encoding.indexOf(';')) > 0)
+                  {
+                    encoding = encoding.substring(0, temp);
+                  }
+                
+                if ((temp = encoding.indexOf('=', temp + 7)) > 0)
+                  {
+                    encoding = encoding.substring(temp + 1);
+                    
+                    // attributes can have comment fields (RFC 822)
+                    if ((temp = encoding.indexOf('(')) > 0)
+                      {
+                        encoding = encoding.substring(0, temp);
+                      }
+                    // ... and values may be quoted
+                    if ((temp = encoding.indexOf('"')) > 0)
+                      {
+                        encoding =
+                          encoding.substring(temp + 1,
+                                             encoding.indexOf('"', temp + 2));
+                      }
+                    encoding.trim();
+                  }
+                else
+                  {
+                    handler.warn("ignoring illegal MIME attribute: "
+                                 + encoding);
+                    encoding = null;
+                  }
+              }
+          }
+      }
+    
+    // if we got an external encoding label, use it ...
+    if (encoding != null)
+      {
+        this.encoding = ENCODING_EXTERNAL;
+        setupDecoding(encoding);
+        ignoreEncoding = true;
+        
+        // ... else autodetect from first bytes.
+      }
+    else
+      {
+        detectEncoding();
+        ignoreEncoding = false;
+      }
 
-    /**
-     * Push, or skip, a new external input source.
-     * The source will be some kind of parsed entity, such as a PE
-     * (including the external DTD subset) or content for the body.
-     *
-     * @param url The java.net.URL object for the entity.
-     * @see SAXDriver#resolveEntity
-     * @see #pushString
-     * @see #sourceType
-     * @see #pushInput
-     * @see #detectEncoding
-     * @see #sourceType
-     * @see #readBuffer
-     */
-    private void pushURL (
-        boolean                isPE,
-       String          ename,
-       String          ids [],         // public, system, baseURI
-       Reader          reader,
-       InputStream     stream,
-       String          encoding,
-       boolean         doResolve
-    ) throws SAXException, IOException
-    {
-       boolean         ignoreEncoding;
-       String          systemId;
-       InputSource     source;
-
-       if (!isPE)
-           dataBufferFlush ();
-
-       scratch.setPublicId (ids [0]);
-       scratch.setSystemId (ids [1]);
-
-       // See if we should skip or substitute the entity.
-       // If we're not skipping, resolving reports startEntity()
-       // and updates the (handler's) stack of URIs.
-       if (doResolve) {
-           // assert (stream == null && reader == null && encoding == null)
-           source = handler.resolveEntity (isPE, ename, scratch, ids [2]);
-           if (source == null) {
-               handler.warn ("skipping entity: " + ename);
-               handler.skippedEntity (ename);
-               if (isPE)
-                   skippedPE = true;
-               return;
-           }
-
-           // we might be using alternate IDs/encoding
-           systemId = source.getSystemId ();
-           // The following warning and setting systemId was deleted bcause
-           // the application has the option of not setting systemId
-           // provided that it has set the characte/byte stream.
-           /*
-           if (systemId == null) {
-               handler.warn ("missing system ID, using " + ids [1]);
-               systemId = ids [1];
-           }
-           */
-       } else {
-           // "[document]", or "[dtd]" via getExternalSubset()
-           scratch.setCharacterStream (reader);
-           scratch.setByteStream (stream);
-           scratch.setEncoding (encoding);
-           source = scratch;
-           systemId = ids [1];
-      if (handler.getFeature (SAXDriver.FEATURE + "string-interning")) {
-        handler.startExternalEntity (ename, systemId,
-                                     "[document]" == ename);
-      } else {
-        handler.startExternalEntity (ename, systemId,
-                                     "[document]".equals(ename));
-      }
-       }
-
-       // we may have been given I/O streams directly
-       if (source.getCharacterStream () != null) {
-           if (source.getByteStream () != null)
-               error ("InputSource has two streams!");
-           reader = source.getCharacterStream ();
-       } else if (source.getByteStream () != null) {
-           encoding = source.getEncoding ();
-           if (encoding == null)
-               stream = source.getByteStream ();
-           else try {
-               reader = new InputStreamReader (
-                   source.getByteStream (),
-                   encoding);
-           } catch (IOException e) {
-               stream = source.getByteStream ();
-           }
-       } else if (systemId == null)
-           error ("InputSource has no URI!");
-       scratch.setCharacterStream (null);
-       scratch.setByteStream (null);
-       scratch.setEncoding (null);
-
-       // Push the existing status.
-       pushInput (ename);
-
-       // Create a new read buffer.
-       // (Note the four-character margin)
-       readBuffer = new char [READ_BUFFER_MAX + 4];
-       readBufferPos = 0;
-       readBufferLength = 0;
-       readBufferOverflow = -1;
-       is = null;
-       line = 1;
-       column = 0;
-       currentByteCount = 0;
-
-       // If there's an explicit character stream, just
-       // ignore encoding declarations.
-       if (reader != null) {
-           sourceType = INPUT_READER;
-           this.reader = reader;
-           tryEncodingDecl (true);
-           return;
-       }
-       
-       // Else we handle the conversion, and need to ensure
-       // it's done right.
-       sourceType = INPUT_STREAM;
-       if (stream != null) {
-           is = stream;
-       } else {
-           // We have to open our own stream to the URL.
-           URL url = new URL (systemId);
-
-           externalEntity = url.openConnection ();
-           externalEntity.connect ();
-           is = externalEntity.getInputStream ();
-       }
-
-       // If we get to here, there must be
-       // an InputStream available.
-       if (!is.markSupported ()) {
-           is = new BufferedInputStream (is);
-       }
-
-       // Get any external encoding label.
-       if (encoding == null && externalEntity != null) {
-           // External labels can be untrustworthy; filesystems in
-           // particular often have the wrong default for content
-           // that wasn't locally originated.  Those we autodetect.
-           if (!"file".equals (externalEntity.getURL ().getProtocol ())) {
-               int temp;
-
-               // application/xml;charset=something;otherAttr=...
-               // ... with many variants on 'something'
-               encoding = externalEntity.getContentType ();
-
-               // MHK code (fix for Saxon 5.5.1/007):
-               // protect against encoding==null
-               if (encoding==null) {
-                   temp = -1;
-               } else {
-                   temp = encoding.indexOf ("charset");
-               }
-
-               // RFC 2376 sez MIME text defaults to ASCII, but since the
-               // JDK will create a MIME type out of thin air, we always
-               // autodetect when there's no explicit charset attribute.
-               if (temp < 0)
-                   encoding = null;    // autodetect
-               else {
-                   // only this one attribute
-                   if ((temp = encoding.indexOf (';')) > 0)
-                       encoding = encoding.substring (0, temp);
-
-                   if ((temp = encoding.indexOf ('=', temp + 7)) > 0) {
-                       encoding = encoding.substring (temp + 1);
-
-                       // attributes can have comment fields (RFC 822)
-                       if ((temp = encoding.indexOf ('(')) > 0)
-                           encoding = encoding.substring (0, temp);
-                       // ... and values may be quoted
-                       if ((temp = encoding.indexOf ('"')) > 0)
-                           encoding = encoding.substring (temp + 1,
-                                   encoding.indexOf ('"', temp + 2));
-                       encoding.trim ();
-                   } else {
-                       handler.warn ("ignoring illegal MIME attribute: "
-                               + encoding);
-                       encoding = null;
-                   }
-               }
-           }
-       }
-
-       // if we got an external encoding label, use it ...
-       if (encoding != null) {
-           this.encoding = ENCODING_EXTERNAL;
-           setupDecoding (encoding);
-           ignoreEncoding = true;
-       
-       // ... else autodetect from first bytes.
-       } else {
-           detectEncoding ();
-           ignoreEncoding = false;
-       }
-
-       // Read any XML or text declaration.
-       // If we autodetected, it may tell us the "real" encoding.
-       try {
-           tryEncodingDecl (ignoreEncoding);
-       } catch (UnsupportedEncodingException x) {
-           encoding = x.getMessage ();
-
-           // if we don't handle the declared encoding,
-           // try letting a JVM InputStreamReader do it
-           try {
-               if (sourceType != INPUT_STREAM)
-                   throw x;
-
-               is.reset ();
-               readBufferPos = 0;
-               readBufferLength = 0;
-               readBufferOverflow = -1;
-               line = 1;
-               currentByteCount = column = 0;
-
-               sourceType = INPUT_READER;
-               this.reader = new InputStreamReader (is, encoding);
-               is = null;
-
-               tryEncodingDecl (true);
-
-           } catch (IOException e) {
-               error ("unsupported text encoding",
-                      encoding,
-                      null);
-           }
-       }
-    }
+    // Read any XML or text declaration.
+    // If we autodetected, it may tell us the "real" encoding.
+    try
+      {
+        tryEncodingDecl(ignoreEncoding);
+      }
+    catch (UnsupportedEncodingException x)
+      {
+        encoding = x.getMessage();
 
+        // if we don't handle the declared encoding,
+        // try letting a JVM InputStreamReader do it
+        try
+          {
+            if (sourceType != INPUT_STREAM)
+              {
+                throw x;
+              }
+
+            is.reset();
+            readBufferPos = 0;
+            readBufferLength = 0;
+            readBufferOverflow = -1;
+            line = 1;
+            currentByteCount = column = 0;
+            
+            sourceType = INPUT_READER;
+            this.reader = new InputStreamReader(is, encoding);
+            is = null;
+            
+            tryEncodingDecl(true);
+            
+          }
+        catch (IOException e)
+          {
+            error("unsupported text encoding",
+                  encoding,
+                  null);
+          }
+      }
+  }
 
-    /**
-     * Check for an encoding declaration.  This is the second part of the
-     * XML encoding autodetection algorithm, relying on detectEncoding to
-     * get to the point that this part can read any encoding declaration
-     * in the document (using only US-ASCII characters).
-     *
-     * <p> Because this part starts to fill parser buffers with this data,
-     * it's tricky to setup a reader so that Java's built-in decoders can be
-     * used for the character encodings that aren't built in to this parser
-     * (such as EUC-JP, KOI8-R, Big5, etc).
-     *
-     * @return any encoding in the declaration, uppercased; or null
-     * @see detectEncoding
-     */
-    private String tryEncodingDecl (boolean ignoreEncoding)
+  /**
+   * Check for an encoding declaration.  This is the second part of the
+   * XML encoding autodetection algorithm, relying on detectEncoding to
+   * get to the point that this part can read any encoding declaration
+   * in the document (using only US-ASCII characters).
+   *
+   * <p> Because this part starts to fill parser buffers with this data,
+   * it's tricky to setup a reader so that Java's built-in decoders can be
+   * used for the character encodings that aren't built in to this parser
+   * (such as EUC-JP, KOI8-R, Big5, etc).
+   *
+   * @return any encoding in the declaration, uppercased; or null
+   * @see detectEncoding
+   */
+  private String tryEncodingDecl(boolean ignoreEncoding)
     throws SAXException, IOException
-    {
-       // Read the XML/text declaration.
-       if (tryRead ("<?xml")) {
-           if (tryWhitespace ()) {
-               if (inputStack.size () > 0) {
-                   return parseTextDecl (ignoreEncoding);
-               } else {
-                   return parseXMLDecl (ignoreEncoding);
-               }
-           } else {
-               // <?xml-stylesheet ...?> or similar
-               unread ('l');
-               unread ('m');
-               unread ('x');
-               unread ('?');
-               unread ('<');
-           }
-       }
-       return null;
-    }
-
+  {
+    // Read the XML/text declaration.
+    if (tryRead("<?xml"))
+      {
+        if (tryWhitespace())
+          {
+            if (inputStack.size() > 0)
+              {
+                return parseTextDecl(ignoreEncoding);
+              }
+            else
+              {
+                return parseXMLDecl(ignoreEncoding);
+              }
+          }
+        else
+          {
+            // <?xml-stylesheet ...?> or similar
+            unread('l');
+            unread('m');
+            unread('x');
+            unread('?');
+            unread('<');
+          }
+      }
+    return null;
+  }
 
-    /**
-     * Attempt to detect the encoding of an entity.
-     * <p>The trick here (as suggested in the XML standard) is that
-     * any entity not in UTF-8, or in UCS-2 with a byte-order mark, 
-     * <b>must</b> begin with an XML declaration or an encoding
-     * declaration; we simply have to look for "&lt;?xml" in various
-     * encodings.
-     * <p>This method has no way to distinguish among 8-bit encodings.
-     * Instead, it sets up for UTF-8, then (possibly) revises its assumption
-     * later in setupDecoding ().  Any ASCII-derived 8-bit encoding
-     * should work, but most will be rejected later by setupDecoding ().
-     * @see #tryEncoding (byte[], byte, byte, byte, byte)
-     * @see #tryEncoding (byte[], byte, byte)
-     * @see #setupDecoding
-     */
-    private void detectEncoding ()
+  /**
+   * Attempt to detect the encoding of an entity.
+   * <p>The trick here (as suggested in the XML standard) is that
+   * any entity not in UTF-8, or in UCS-2 with a byte-order mark, 
+   * <b>must</b> begin with an XML declaration or an encoding
+   * declaration; we simply have to look for "&lt;?xml" in various
+   * encodings.
+   * <p>This method has no way to distinguish among 8-bit encodings.
+   * Instead, it sets up for UTF-8, then (possibly) revises its assumption
+   * later in setupDecoding ().  Any ASCII-derived 8-bit encoding
+   * should work, but most will be rejected later by setupDecoding ().
+   * @see #tryEncoding (byte[], byte, byte, byte, byte)
+   * @see #tryEncoding (byte[], byte, byte)
+   * @see #setupDecoding
+   */
+  private void detectEncoding()
     throws SAXException, IOException
-    {
-       byte signature[] = new byte [4];
-
-       // Read the first four bytes for
-       // autodetection.
-       is.mark (4);
-       is.read (signature);
-       is.reset ();
-
-       //
-       // FIRST:  four byte encodings (who uses these?)
-       //
-       if (tryEncoding (signature, (byte) 0x00, (byte) 0x00,
-                         (byte) 0x00, (byte) 0x3c)) {
-           // UCS-4 must begin with "<?xml"
-           // 0x00 0x00 0x00 0x3c: UCS-4, big-endian (1234)
-           // "UTF-32BE"
-           encoding = ENCODING_UCS_4_1234;
-
-       } else if (tryEncoding (signature, (byte) 0x3c, (byte) 0x00,
-                                (byte) 0x00, (byte) 0x00)) {
-           // 0x3c 0x00 0x00 0x00: UCS-4, little-endian (4321)
-           // "UTF-32LE"
-           encoding = ENCODING_UCS_4_4321;
-
-       } else if (tryEncoding (signature, (byte) 0x00, (byte) 0x00,
-                                (byte) 0x3c, (byte) 0x00)) {
-           // 0x00 0x00 0x3c 0x00: UCS-4, unusual (2143)
-           encoding = ENCODING_UCS_4_2143;
-
-       } else if (tryEncoding (signature, (byte) 0x00, (byte) 0x3c,
-                                (byte) 0x00, (byte) 0x00)) {
-           // 0x00 0x3c 0x00 0x00: UCS-4, unusual (3421)
-           encoding = ENCODING_UCS_4_3412;
-
-           // 00 00 fe ff UCS_4_1234 (with BOM)
-           // ff fe 00 00 UCS_4_4321 (with BOM)
-       }
-
-       //
-       // SECOND:  two byte encodings
-       // note ... with 1/14/2000 errata the XML spec identifies some
-       // more "broken UTF-16" autodetection cases, with no XML decl,
-       // which we don't handle here (that's legal too).
-       //
-       else if (tryEncoding (signature, (byte) 0xfe, (byte) 0xff)) {
-           // UCS-2 with a byte-order marker. (UTF-16)
-           // 0xfe 0xff: UCS-2, big-endian (12)
-           encoding = ENCODING_UCS_2_12;
-           is.read (); is.read ();
-
-       } else if (tryEncoding (signature, (byte) 0xff, (byte) 0xfe)) {
-           // UCS-2 with a byte-order marker. (UTF-16)
-           // 0xff 0xfe: UCS-2, little-endian (21)
-           encoding = ENCODING_UCS_2_21;
-           is.read (); is.read ();
-
-       } else if (tryEncoding (signature, (byte) 0x00, (byte) 0x3c,
-                                (byte) 0x00, (byte) 0x3f)) {
-           // UTF-16BE (otherwise, malformed UTF-16)
-           // 0x00 0x3c 0x00 0x3f: UCS-2, big-endian, no byte-order mark
-           encoding = ENCODING_UCS_2_12;
-           error ("no byte-order mark for UCS-2 entity");
-
-       } else if (tryEncoding (signature, (byte) 0x3c, (byte) 0x00,
-                                (byte) 0x3f, (byte) 0x00)) {
-           // UTF-16LE (otherwise, malformed UTF-16)
-           // 0x3c 0x00 0x3f 0x00: UCS-2, little-endian, no byte-order mark
-           encoding = ENCODING_UCS_2_21;
-           error ("no byte-order mark for UCS-2 entity");
-       }
-
-       //
-       // THIRD:  ASCII-derived encodings, fixed and variable lengths
-       //
-       else if (tryEncoding (signature, (byte) 0x3c, (byte) 0x3f,
-                              (byte) 0x78, (byte) 0x6d)) {
-           // ASCII derived
-           // 0x3c 0x3f 0x78 0x6d: UTF-8 or other 8-bit markup (read ENCODING)
-           encoding = ENCODING_UTF_8;
-           prefetchASCIIEncodingDecl ();
-
-       } else if (signature [0] == (byte) 0xef
-               && signature [1] == (byte) 0xbb
-               && signature [2] == (byte) 0xbf) {
-           // 0xef 0xbb 0xbf: UTF-8 BOM (not part of document text)
-           // this un-needed notion slipped into XML 2nd ed through a
-           // "non-normative" erratum; now required by MSFT and UDDI,
-           // and E22 made it normative.
-           encoding = ENCODING_UTF_8;
-           is.read (); is.read (); is.read ();
-
-       } else {
-           // 4c 6f a7 94 ... we don't understand EBCDIC flavors
-           // ... but we COULD at least kick in some fixed code page
-
-           // (default) UTF-8 without encoding/XML declaration
-           encoding = ENCODING_UTF_8;
-       }
-    }
-
+  {
+    byte[] signature = new byte[4];
 
-    /**
-     * Check for a four-byte signature.
-     * <p>Utility routine for detectEncoding ().
-     * <p>Always looks for some part of "<?XML" in a specific encoding.
-     * @param sig The first four bytes read.
-     * @param b1 The first byte of the signature
-     * @param b2 The second byte of the signature
-     * @param b3 The third byte of the signature
-     * @param b4 The fourth byte of the signature
-     * @see #detectEncoding
-     */
-    private static boolean tryEncoding (
-       byte sig[], byte b1, byte b2, byte b3, byte b4)
-    {
-       return (sig [0] == b1 && sig [1] == b2
-               && sig [2] == b3 && sig [3] == b4);
-    }
+    // Read the first four bytes for
+    // autodetection.
+    is.mark(4);
+    is.read(signature);
+    is.reset();
 
+    //
+    // FIRST:  four byte encodings (who uses these?)
+    //
+    if (tryEncoding(signature, (byte) 0x00, (byte) 0x00,
+                    (byte) 0x00, (byte) 0x3c))
+      {
+        // UCS-4 must begin with "<?xml"
+        // 0x00 0x00 0x00 0x3c: UCS-4, big-endian (1234)
+        // "UTF-32BE"
+        encoding = ENCODING_UCS_4_1234;
+      }
+    else if (tryEncoding(signature, (byte) 0x3c, (byte) 0x00,
+                         (byte) 0x00, (byte) 0x00))
+      {
+        // 0x3c 0x00 0x00 0x00: UCS-4, little-endian (4321)
+        // "UTF-32LE"
+        encoding = ENCODING_UCS_4_4321;
+      }
+    else if (tryEncoding(signature, (byte) 0x00, (byte) 0x00,
+                         (byte) 0x3c, (byte) 0x00))
+      {
+        // 0x00 0x00 0x3c 0x00: UCS-4, unusual (2143)
+        encoding = ENCODING_UCS_4_2143;
+      }
+    else if (tryEncoding(signature, (byte) 0x00, (byte) 0x3c,
+                         (byte) 0x00, (byte) 0x00))
+      {
+        // 0x00 0x3c 0x00 0x00: UCS-4, unusual (3421)
+        encoding = ENCODING_UCS_4_3412;
+
+        // 00 00 fe ff UCS_4_1234 (with BOM)
+        // ff fe 00 00 UCS_4_4321 (with BOM)
+      }
 
-    /**
-     * Check for a two-byte signature.
-     * <p>Looks for a UCS-2 byte-order mark.
-     * <p>Utility routine for detectEncoding ().
-     * @param sig The first four bytes read.
-     * @param b1 The first byte of the signature
-     * @param b2 The second byte of the signature
-     * @see #detectEncoding
-     */
-    private static boolean tryEncoding (byte sig[], byte b1, byte b2)
-    {
-       return ((sig [0] == b1) && (sig [1] == b2));
-    }
+    //
+    // SECOND:  two byte encodings
+    // note ... with 1/14/2000 errata the XML spec identifies some
+    // more "broken UTF-16" autodetection cases, with no XML decl,
+    // which we don't handle here (that's legal too).
+    //
+    else if (tryEncoding(signature, (byte) 0xfe, (byte) 0xff))
+      {
+        // UCS-2 with a byte-order marker. (UTF-16)
+        // 0xfe 0xff: UCS-2, big-endian (12)
+        encoding = ENCODING_UCS_2_12;
+        is.read(); is.read();
+      }
+    else if (tryEncoding(signature, (byte) 0xff, (byte) 0xfe))
+      {
+        // UCS-2 with a byte-order marker. (UTF-16)
+        // 0xff 0xfe: UCS-2, little-endian (21)
+        encoding = ENCODING_UCS_2_21;
+        is.read(); is.read();
+      }
+    else if (tryEncoding(signature, (byte) 0x00, (byte) 0x3c,
+                         (byte) 0x00, (byte) 0x3f))
+      {
+        // UTF-16BE (otherwise, malformed UTF-16)
+        // 0x00 0x3c 0x00 0x3f: UCS-2, big-endian, no byte-order mark
+        encoding = ENCODING_UCS_2_12;
+        error("no byte-order mark for UCS-2 entity");
+      }
+    else if (tryEncoding(signature, (byte) 0x3c, (byte) 0x00,
+                         (byte) 0x3f, (byte) 0x00))
+      {
+        // UTF-16LE (otherwise, malformed UTF-16)
+        // 0x3c 0x00 0x3f 0x00: UCS-2, little-endian, no byte-order mark
+        encoding = ENCODING_UCS_2_21;
+        error("no byte-order mark for UCS-2 entity");
+      }
 
+    //
+    // THIRD:  ASCII-derived encodings, fixed and variable lengths
+    //
+    else if (tryEncoding(signature, (byte) 0x3c, (byte) 0x3f,
+                         (byte) 0x78, (byte) 0x6d))
+      {
+        // ASCII derived
+        // 0x3c 0x3f 0x78 0x6d: UTF-8 or other 8-bit markup (read ENCODING)
+        encoding = ENCODING_UTF_8;
+        prefetchASCIIEncodingDecl();
+      }
+    else if (signature[0] == (byte) 0xef
+             && signature[1] == (byte) 0xbb
+             && signature[2] == (byte) 0xbf)
+      {
+        // 0xef 0xbb 0xbf: UTF-8 BOM (not part of document text)
+        // this un-needed notion slipped into XML 2nd ed through a
+        // "non-normative" erratum; now required by MSFT and UDDI,
+        // and E22 made it normative.
+        encoding = ENCODING_UTF_8;
+        is.read(); is.read(); is.read();
+      }
+    else
+      {
+        // 4c 6f a7 94 ... we don't understand EBCDIC flavors
+        // ... but we COULD at least kick in some fixed code page
+        
+        // (default) UTF-8 without encoding/XML declaration
+        encoding = ENCODING_UTF_8;
+      }
+  }
 
-    /**
-     * This method pushes a string back onto input.
-     * <p>It is useful either as the expansion of an internal entity, 
-     * or for backtracking during the parse.
-     * <p>Call pushCharArray () to do the actual work.
-     * @param s The string to push back onto input.
-     * @see #pushCharArray
-     */
-    private void pushString (String ename, String s)
-    throws SAXException
-    {
-       char ch[] = s.toCharArray ();
-       pushCharArray (ename, ch, 0, ch.length);
-    }
+  /**
+   * Check for a four-byte signature.
+   * <p>Utility routine for detectEncoding ().
+   * <p>Always looks for some part of "<?XML" in a specific encoding.
+   * @param sig The first four bytes read.
+   * @param b1 The first byte of the signature
+   * @param b2 The second byte of the signature
+   * @param b3 The third byte of the signature
+   * @param b4 The fourth byte of the signature
+   * @see #detectEncoding
+   */
+  private static boolean tryEncoding(byte[] sig, byte b1, byte b2,
+                                     byte b3, byte b4)
+  {
+    return (sig[0] == b1 && sig[1] == b2
+            && sig[2] == b3 && sig[3] == b4);
+  }
 
+  /**
+   * Check for a two-byte signature.
+   * <p>Looks for a UCS-2 byte-order mark.
+   * <p>Utility routine for detectEncoding ().
+   * @param sig The first four bytes read.
+   * @param b1 The first byte of the signature
+   * @param b2 The second byte of the signature
+   * @see #detectEncoding
+   */
+  private static boolean tryEncoding(byte[] sig, byte b1, byte b2)
+  {
+    return ((sig[0] == b1) && (sig[1] == b2));
+  }
 
-    /**
-     * Push a new internal input source.
-     * <p>This method is useful for expanding an internal entity,
-     * or for unreading a string of characters.  It creates a new
-     * readBuffer containing the characters in the array, instead
-     * of characters converted from an input byte stream.
-     * @param ch The char array to push.
-     * @see #pushString
-     * @see #pushURL
-     * @see #readBuffer
-     * @see #sourceType
-     * @see #pushInput
-     */
-    private void pushCharArray (String ename, char ch[], int start, int length)
+  /**
+   * This method pushes a string back onto input.
+   * <p>It is useful either as the expansion of an internal entity, 
+   * or for backtracking during the parse.
+   * <p>Call pushCharArray () to do the actual work.
+   * @param s The string to push back onto input.
+   * @see #pushCharArray
+   */
+  private void pushString(String ename, String s)
     throws SAXException
-    {
-       // Push the existing status
-       pushInput (ename);
-       if (ename != null && doReport) {
-           dataBufferFlush ();
-           handler.startInternalEntity (ename);
-       }
-       sourceType = INPUT_INTERNAL;
-       readBuffer = ch;
-       readBufferPos = start;
-       readBufferLength = length;
-       readBufferOverflow = -1;
-    }
-
+  {
+    char[] ch = s.toCharArray();
+    pushCharArray(ename, ch, 0, ch.length);
+  }
 
-    /**
-     * Save the current input source onto the stack.
-     * <p>This method saves all of the global variables associated with
-     * the current input source, so that they can be restored when a new
-     * input source has finished.  It also tests for entity recursion.
-     * <p>The method saves the following global variables onto a stack
-     * using a fixed-length array:
-     * <ol>
-     * <li>sourceType
-     * <li>externalEntity
-     * <li>readBuffer
-     * <li>readBufferPos
-     * <li>readBufferLength
-     * <li>line
-     * <li>encoding
-     * </ol>
-     * @param ename The name of the entity (if any) causing the new input.
-     * @see #popInput
-     * @see #sourceType
-     * @see #externalEntity
-     * @see #readBuffer
-     * @see #readBufferPos
-     * @see #readBufferLength
-     * @see #line
-     * @see #encoding
-     */
-    private void pushInput (String ename)
+  /**
+   * Push a new internal input source.
+   * <p>This method is useful for expanding an internal entity,
+   * or for unreading a string of characters.  It creates a new
+   * readBuffer containing the characters in the array, instead
+   * of characters converted from an input byte stream.
+   * @param ch The char array to push.
+   * @see #pushString
+   * @see #pushURL
+   * @see #readBuffer
+   * @see #sourceType
+   * @see #pushInput
+   */
+  private void pushCharArray(String ename, char[] ch, int start, int length)
     throws SAXException
-    {
-       // Check for entity recursion.
-       if (ename != null) {
-           Enumeration entities = entityStack.elements ();
-           while (entities.hasMoreElements ()) {
-               String e = (String) entities.nextElement ();
-               if (e != null && e == ename) {
-                   error ("recursive reference to entity", ename, null);
-               }
-           }
-       }
-       entityStack.push (ename);
-
-       // Don't bother if there is no current input.
-       if (sourceType == INPUT_NONE) {
-           return;
-       }
-
-       // Set up a snapshot of the current
-       // input source.
-       Object input[] = new Object [12];
-
-       input [0] = new Integer (sourceType);
-       input [1] = externalEntity;
-       input [2] = readBuffer;
-       input [3] = new Integer (readBufferPos);
-       input [4] = new Integer (readBufferLength);
-       input [5] = new Integer (line);
-       input [6] = new Integer (encoding);
-       input [7] = new Integer (readBufferOverflow);
-       input [8] = is;
-       input [9] = new Integer (currentByteCount);
-       input [10] = new Integer (column);
-       input [11] = reader;
-
-       // Push it onto the stack.
-       inputStack.push (input);
-    }
+  {
+    // Push the existing status
+    pushInput(ename);
+    if (ename != null && doReport)
+      {
+        dataBufferFlush();
+        handler.startInternalEntity(ename);
+      }
+    sourceType = INPUT_INTERNAL;
+    readBuffer = ch;
+    readBufferPos = start;
+    readBufferLength = length;
+    readBufferOverflow = -1;
+  }
 
+  /**
+   * Save the current input source onto the stack.
+   * <p>This method saves all of the global variables associated with
+   * the current input source, so that they can be restored when a new
+   * input source has finished.  It also tests for entity recursion.
+   * <p>The method saves the following global variables onto a stack
+   * using a fixed-length array:
+   * <ol>
+   * <li>sourceType
+   * <li>externalEntity
+   * <li>readBuffer
+   * <li>readBufferPos
+   * <li>readBufferLength
+   * <li>line
+   * <li>encoding
+   * </ol>
+   * @param ename The name of the entity (if any) causing the new input.
+   * @see #popInput
+   * @see #sourceType
+   * @see #externalEntity
+   * @see #readBuffer
+   * @see #readBufferPos
+   * @see #readBufferLength
+   * @see #line
+   * @see #encoding
+   */
+  private void pushInput(String ename)
+    throws SAXException
+  {
+    // Check for entity recursion.
+    if (ename != null)
+      {
+        Iterator entities = entityStack.iterator();
+        while (entities.hasNext())
+          {
+            String e = (String) entities.next();
+            if (e != null && e == ename)
+              {
+                error("recursive reference to entity", ename, null);
+              }
+          }
+      }
+    entityStack.addLast(ename);
+    
+    // Don't bother if there is no current input.
+    if (sourceType == INPUT_NONE)
+      {
+        return;
+      }
+    
+    // Set up a snapshot of the current
+    // input source.
+    Input input = new Input();
+
+    input.sourceType = sourceType;
+    input.externalEntity = externalEntity;
+    input.readBuffer = readBuffer;
+    input.readBufferPos = readBufferPos;
+    input.readBufferLength = readBufferLength;
+    input.line = line;
+    input.encoding = encoding;
+    input.readBufferOverflow = readBufferOverflow;
+    input.is = is;
+    input.currentByteCount = currentByteCount;
+    input.column = column;
+    input.reader = reader;
+    
+    // Push it onto the stack.
+    inputStack.addLast(input);
+  }
 
-    /**
-     * Restore a previous input source.
-     * <p>This method restores all of the global variables associated with
-     * the current input source.
-     * @exception java.io.EOFException
-     *    If there are no more entries on the input stack.
-     * @see #pushInput
-     * @see #sourceType
-     * @see #externalEntity
-     * @see #readBuffer
-     * @see #readBufferPos
-     * @see #readBufferLength
-     * @see #line
-     * @see #encoding
-     */
-    private void popInput ()
+  /**
+   * Restore a previous input source.
+   * <p>This method restores all of the global variables associated with
+   * the current input source.
+   * @exception java.io.EOFException
+   *    If there are no more entries on the input stack.
+   * @see #pushInput
+   * @see #sourceType
+   * @see #externalEntity
+   * @see #readBuffer
+   * @see #readBufferPos
+   * @see #readBufferLength
+   * @see #line
+   * @see #encoding
+   */
+  private void popInput()
     throws SAXException, IOException
-    {
-       String ename = (String) entityStack.pop ();
-
-       if (ename != null && doReport)
-           dataBufferFlush ();
-       switch (sourceType) {
-       case INPUT_STREAM:
-           handler.endExternalEntity (ename);
-           is.close ();
-           break;
-       case INPUT_READER:
-           handler.endExternalEntity (ename);
-           reader.close ();
-           break;
-       case INPUT_INTERNAL:
-           if (ename != null && doReport)
-               handler.endInternalEntity (ename);
-           break;
-       }
-
-       // Throw an EOFException if there
-       // is nothing else to pop.
-       if (inputStack.isEmpty ()) {
-           throw new EOFException ("no more input");
-       }
-
-       Object input [] = (Object[]) inputStack.pop ();
-
-       sourceType = ((Integer) input [0]).intValue ();
-       externalEntity = (URLConnection) input [1];
-       readBuffer = (char[]) input [2];
-       readBufferPos = ((Integer) input [3]).intValue ();
-       readBufferLength = ((Integer) input [4]).intValue ();
-       line = ((Integer) input [5]).intValue ();
-       encoding = ((Integer) input [6]).intValue ();
-       readBufferOverflow = ((Integer) input [7]).intValue ();
-       is = (InputStream) input [8];
-       currentByteCount = ((Integer) input [9]).intValue ();
-       column = ((Integer) input [10]).intValue ();
-       reader = (Reader) input [11];
-    }
-
+  {
+    String ename = (String) entityStack.removeLast();
 
-    /**
-     * Return true if we can read the expected character.
-     * <p>Note that the character will be removed from the input stream
-     * on success, but will be put back on failure.  Do not attempt to
-     * read the character again if the method succeeds.
-     * @param delim The character that should appear next.  For a
-     *       insensitive match, you must supply this in upper-case.
-     * @return true if the character was successfully read, or false if
-     *  it was not.
-     * @see #tryRead (String)
-     */
-    private boolean tryRead (char delim)
-    throws SAXException, IOException
-    {
-       char c;
-
-       // Read the character
-       c = readCh ();
-
-       // Test for a match, and push the character
-       // back if the match fails.
-       if (c == delim) {
-           return true;
-       } else {
-           unread (c);
-           return false;
-       }
-    }
+    if (ename != null && doReport)
+      {
+        dataBufferFlush();
+      }
+    switch (sourceType)
+      {
+      case INPUT_STREAM:
+        handler.endExternalEntity(ename);
+        is.close();
+        break;
+      case INPUT_READER:
+        handler.endExternalEntity(ename);
+        reader.close();
+        break;
+      case INPUT_INTERNAL:
+        if (ename != null && doReport)
+          {
+            handler.endInternalEntity(ename);
+          }
+        break;
+      }
 
+    // Throw an EOFException if there
+    // is nothing else to pop.
+    if (inputStack.isEmpty())
+      {
+        throw new EOFException("no more input");
+      }
 
-    /**
-     * Return true if we can read the expected string.
-     * <p>This is simply a convenience method.
-     * <p>Note that the string will be removed from the input stream
-     * on success, but will be put back on failure.  Do not attempt to
-     * read the string again if the method succeeds.
-     * <p>This method will push back a character rather than an
-     * array whenever possible (probably the majority of cases).
-     * @param delim The string that should appear next.
-     * @return true if the string was successfully read, or false if
-     *  it was not.
-     * @see #tryRead (char)
-     */
-    private boolean tryRead (String delim)
+    Input input = (Input) inputStack.removeLast();
+
+    sourceType = input.sourceType;
+    externalEntity = input.externalEntity;
+    readBuffer = input.readBuffer;
+    readBufferPos = input.readBufferPos;
+    readBufferLength = input.readBufferLength;
+    line = input.line;
+    encoding = input.encoding;
+    readBufferOverflow = input.readBufferOverflow;
+    is = input.is;
+    currentByteCount = input.currentByteCount;
+    column = input.column;
+    reader = input.reader;
+  }
+  
+  /**
+   * Return true if we can read the expected character.
+   * <p>Note that the character will be removed from the input stream
+   * on success, but will be put back on failure.  Do not attempt to
+   * read the character again if the method succeeds.
+   * @param delim The character that should appear next.  For a
+   *        insensitive match, you must supply this in upper-case.
+   * @return true if the character was successfully read, or false if
+   *   it was not.
+   * @see #tryRead (String)
+   */
+  private boolean tryRead(char delim)
     throws SAXException, IOException
-    {
-       return tryRead (delim.toCharArray ());
-    }
+  {
+    char c;
+    
+    // Read the character
+    c = readCh();
+
+    // Test for a match, and push the character
+    // back if the match fails.
+    if (c == delim)
+      {
+        return true;
+      }
+    else
+      {
+        unread(c);
+        return false;
+      }
+  }
 
-    private boolean tryRead (char ch [])
+  /**
+   * Return true if we can read the expected string.
+   * <p>This is simply a convenience method.
+   * <p>Note that the string will be removed from the input stream
+   * on success, but will be put back on failure.  Do not attempt to
+   * read the string again if the method succeeds.
+   * <p>This method will push back a character rather than an
+   * array whenever possible (probably the majority of cases).
+   * @param delim The string that should appear next.
+   * @return true if the string was successfully read, or false if
+   *   it was not.
+   * @see #tryRead (char)
+   */
+  private boolean tryRead(String delim)
     throws SAXException, IOException
-    {
-       char c;
-
-       // Compare the input, character-
-       // by character.
-
-       for (int i = 0; i < ch.length; i++) {
-           c = readCh ();
-           if (c != ch [i]) {
-               unread (c);
-               if (i != 0) {
-                   unread (ch, i);
-               }
-               return false;
-           }
-       }
-       return true;
-    }
-
-
+  {
+    return tryRead(delim.toCharArray());
+  }
 
-    /**
-     * Return true if we can read some whitespace.
-     * <p>This is simply a convenience method.
-     * <p>This method will push back a character rather than an
-     * array whenever possible (probably the majority of cases).
-     * @return true if whitespace was found.
-     */
-    private boolean tryWhitespace ()
+  private boolean tryRead(char[] ch)
     throws SAXException, IOException
-    {
-       char c;
-       c = readCh ();
-       if (isWhitespace (c)) {
-           skipWhitespace ();
-           return true;
-       } else {
-           unread (c);
-           return false;
-       }
-    }
+  {
+    char c;
 
+    // Compare the input, character-
+    // by character.
+    
+    for (int i = 0; i < ch.length; i++)
+      {
+        c = readCh();
+        if (c != ch[i])
+          {
+            unread(c);
+            if (i != 0)
+              {
+                unread(ch, i);
+              }
+            return false;
+          }
+      }
+    return true;
+  }
 
-    /**
-     * Read all data until we find the specified string.
-     * This is useful for scanning CDATA sections and PIs.
-     * <p>This is inefficient right now, since it calls tryRead ()
-     * for every character.
-     * @param delim The string delimiter
-     * @see #tryRead (String, boolean)
-     * @see #readCh
-     */
-    private void parseUntil (String delim)
+  /**
+   * Return true if we can read some whitespace.
+   * <p>This is simply a convenience method.
+   * <p>This method will push back a character rather than an
+   * array whenever possible (probably the majority of cases).
+   * @return true if whitespace was found.
+   */
+  private boolean tryWhitespace()
+    throws SAXException, IOException
+  {
+    char c;
+    c = readCh();
+    if (isWhitespace(c))
+      {
+        skipWhitespace();
+        return true;
+      }
+    else
+      {
+        unread(c);
+        return false;
+      }
+  }
+  
+  /**
+   * Read all data until we find the specified string.
+   * This is useful for scanning CDATA sections and PIs.
+   * <p>This is inefficient right now, since it calls tryRead ()
+   * for every character.
+   * @param delim The string delimiter
+   * @see #tryRead (String, boolean)
+   * @see #readCh
+   */
+  private void parseUntil(String delim)
     throws SAXException, IOException
-    {
-       parseUntil (delim.toCharArray ());
-    }
+  {
+    parseUntil(delim.toCharArray());
+  }
 
-    private void parseUntil (char delim [])
+  private void parseUntil(char[] delim)
     throws SAXException, IOException
-    {
-       char c;
-       int startLine = line;
-
-       try {
-           while (!tryRead (delim)) {
-               c = readCh ();
-               dataBufferAppend (c);
-           }
-       } catch (EOFException e) {
-           error ("end of input while looking for delimiter "
-               + "(started on line " + startLine
-               + ')', null, new String (delim));
-       }
-    }
-
-
-    //////////////////////////////////////////////////////////////////////
-    // Low-level I/O.
-    //////////////////////////////////////////////////////////////////////
-
+  {
+    char c;
+    int startLine = line;
+    
+    try
+      {
+        while (!tryRead(delim))
+          {
+            c = readCh();
+            dataBufferAppend(c);
+          }
+      }
+    catch (EOFException e)
+      {
+        error("end of input while looking for delimiter "
+              + "(started on line " + startLine
+              + ')', null, new String(delim));
+      }
+  }
 
-    /**
-     * Prefetch US-ASCII XML/text decl from input stream into read buffer.
-     * Doesn't buffer more than absolutely needed, so that when an encoding
-     * decl says we need to create an InputStreamReader, we can discard our
-     * buffer and reset().  Caller knows the first chars of the decl exist
-     * in the input stream.
-     */
-    private void prefetchASCIIEncodingDecl ()
+  //////////////////////////////////////////////////////////////////////
+  // Low-level I/O.
+  //////////////////////////////////////////////////////////////////////
+  
+  /**
+   * Prefetch US-ASCII XML/text decl from input stream into read buffer.
+   * Doesn't buffer more than absolutely needed, so that when an encoding
+   * decl says we need to create an InputStreamReader, we can discard our
+   * buffer and reset().  Caller knows the first chars of the decl exist
+   * in the input stream.
+   */
+  private void prefetchASCIIEncodingDecl()
     throws SAXException, IOException
-    {
-       int ch;
-       readBufferPos = readBufferLength = 0;
-
-       is.mark (readBuffer.length);
-       while (true) {
-           ch = is.read ();
-           readBuffer [readBufferLength++] = (char) ch;
-           switch (ch) {
-             case (int) '>':
-               return;
-             case -1:
-               error ("file ends before end of XML or encoding declaration.",
-                      null, "?>");
-           }
-           if (readBuffer.length == readBufferLength)
-               error ("unfinished XML or encoding declaration");
-       }
-    }
+  {
+    int ch;
+    readBufferPos = readBufferLength = 0;
+    
+    is.mark(readBuffer.length);
+    while (true)
+      {
+        ch = is.read();
+        readBuffer[readBufferLength++] = (char) ch;
+        switch (ch)
+          {
+          case (int) '>':
+            return;
+          case -1:
+            error("file ends before end of XML or encoding declaration.",
+                  null, "?>");
+          }
+        if (readBuffer.length == readBufferLength)
+          {
+            error("unfinished XML or encoding declaration");
+          }
+      }
+  }
 
-    /**
-     * Read a chunk of data from an external input source.
-     * <p>This is simply a front-end that fills the rawReadBuffer
-     * with bytes, then calls the appropriate encoding handler.
-     * @see #encoding
-     * @see #rawReadBuffer
-     * @see #readBuffer
-     * @see #filterCR
-     * @see #copyUtf8ReadBuffer
-     * @see #copyIso8859_1ReadBuffer
-     * @see #copyUcs_2ReadBuffer
-     * @see #copyUcs_4ReadBuffer
-     */
-    private void readDataChunk ()
+  /**
+   * Read a chunk of data from an external input source.
+   * <p>This is simply a front-end that fills the rawReadBuffer
+   * with bytes, then calls the appropriate encoding handler.
+   * @see #encoding
+   * @see #rawReadBuffer
+   * @see #readBuffer
+   * @see #filterCR
+   * @see #copyUtf8ReadBuffer
+   * @see #copyIso8859_1ReadBuffer
+   * @see #copyUcs_2ReadBuffer
+   * @see #copyUcs_4ReadBuffer
+   */
+  private void readDataChunk()
     throws SAXException, IOException
-    {
-       int count;
-
-       // See if we have any overflow (filterCR sets for CR at end)
-       if (readBufferOverflow > -1) {
-           readBuffer [0] = (char) readBufferOverflow;
-           readBufferOverflow = -1;
-           readBufferPos = 1;
-           sawCR = true;
-       } else {
-           readBufferPos = 0;
-           sawCR = false;
-       }
-
-       // input from a character stream.
-       if (sourceType == INPUT_READER) {
-           count = reader.read (readBuffer,
-                           readBufferPos, READ_BUFFER_MAX - readBufferPos);
-           if (count < 0)
-               readBufferLength = readBufferPos;
-           else
-               readBufferLength = readBufferPos + count;
-           if (readBufferLength > 0)
-               filterCR (count >= 0);
-           sawCR = false;
-           return;
-       }
-
-       // Read as many bytes as possible into the raw buffer.
-       count = is.read (rawReadBuffer, 0, READ_BUFFER_MAX);
-
-       // Dispatch to an encoding-specific reader method to populate
-       // the readBuffer.  In most parser speed profiles, these routines
-       // show up at the top of the CPU usage chart.
-       if (count > 0) {
-           switch (encoding) {
-             // one byte builtins
-             case ENCODING_ASCII:
-               copyIso8859_1ReadBuffer (count, (char) 0x0080);
-               break;
-             case ENCODING_UTF_8:
-               copyUtf8ReadBuffer (count);
-               break;
-             case ENCODING_ISO_8859_1:
-               copyIso8859_1ReadBuffer (count, (char) 0);
-               break;
-
-             // two byte builtins
-             case ENCODING_UCS_2_12:
-               copyUcs2ReadBuffer (count, 8, 0);
-               break;
-             case ENCODING_UCS_2_21:
-               copyUcs2ReadBuffer (count, 0, 8);
-               break;
-
-             // four byte builtins
-             case ENCODING_UCS_4_1234:
-               copyUcs4ReadBuffer (count, 24, 16, 8, 0);
-               break;
-             case ENCODING_UCS_4_4321:
-               copyUcs4ReadBuffer (count, 0, 8, 16, 24);
-               break;
-             case ENCODING_UCS_4_2143:
-               copyUcs4ReadBuffer (count, 16, 24, 0, 8);
-               break;
-             case ENCODING_UCS_4_3412:
-               copyUcs4ReadBuffer (count, 8, 0, 24, 16);
-               break;
-           }
-       } else
-           readBufferLength = readBufferPos;
-
-       readBufferPos = 0;
-
-       // Filter out all carriage returns if we've seen any
-       // (including any saved from a previous read)
-       if (sawCR) {
-           filterCR (count >= 0);
-           sawCR = false;
-
-           // must actively report EOF, lest some CRs get lost.
-           if (readBufferLength == 0 && count >= 0)
-               readDataChunk ();
-       }
-
-       if (count > 0)
-           currentByteCount += count;
-    }
+  {
+    int count;
+    
+    // See if we have any overflow (filterCR sets for CR at end)
+    if (readBufferOverflow > -1)
+      {
+        readBuffer[0] = (char) readBufferOverflow;
+        readBufferOverflow = -1;
+        readBufferPos = 1;
+        sawCR = true;
+      }
+    else
+      {
+        readBufferPos = 0;
+        sawCR = false;
+      }
 
+    // input from a character stream.
+    if (sourceType == INPUT_READER)
+      {
+        count = reader.read(readBuffer,
+                            readBufferPos, READ_BUFFER_MAX - readBufferPos);
+        if (count < 0)
+          {
+            readBufferLength = readBufferPos;
+          }
+        else
+          {
+            readBufferLength = readBufferPos + count;
+          }
+        if (readBufferLength > 0)
+          {
+            filterCR(count >= 0);
+          }
+        sawCR = false;
+        return;
+      }
+    
+    // Read as many bytes as possible into the raw buffer.
+    count = is.read(rawReadBuffer, 0, READ_BUFFER_MAX);
+
+    // Dispatch to an encoding-specific reader method to populate
+    // the readBuffer.  In most parser speed profiles, these routines
+    // show up at the top of the CPU usage chart.
+    if (count > 0)
+      {
+        switch (encoding)
+          {
+            // one byte builtins
+          case ENCODING_ASCII:
+            copyIso8859_1ReadBuffer(count, (char) 0x0080);
+            break;
+          case ENCODING_UTF_8:
+            copyUtf8ReadBuffer(count);
+            break;
+          case ENCODING_ISO_8859_1:
+            copyIso8859_1ReadBuffer(count, (char) 0);
+            break;
 
-    /**
-     * Filter carriage returns in the read buffer.
-     * CRLF becomes LF; CR becomes LF.
-     * @param moreData true iff more data might come from the same source
-     * @see #readDataChunk
-     * @see #readBuffer
-     * @see #readBufferOverflow
-     */
-    private void filterCR (boolean moreData)
-    {
-       int i, j;
+            // two byte builtins
+          case ENCODING_UCS_2_12:
+            copyUcs2ReadBuffer(count, 8, 0);
+            break;
+          case ENCODING_UCS_2_21:
+            copyUcs2ReadBuffer(count, 0, 8);
+            break;
+            
+            // four byte builtins
+          case ENCODING_UCS_4_1234:
+            copyUcs4ReadBuffer(count, 24, 16, 8, 0);
+            break;
+          case ENCODING_UCS_4_4321:
+            copyUcs4ReadBuffer(count, 0, 8, 16, 24);
+            break;
+          case ENCODING_UCS_4_2143:
+            copyUcs4ReadBuffer(count, 16, 24, 0, 8);
+            break;
+          case ENCODING_UCS_4_3412:
+            copyUcs4ReadBuffer(count, 8, 0, 24, 16);
+            break;
+          }
+      }
+    else
+      {
+        readBufferLength = readBufferPos;
+      }
 
-       readBufferOverflow = -1;
+    readBufferPos = 0;
+    
+    // Filter out all carriage returns if we've seen any
+    // (including any saved from a previous read)
+    if (sawCR)
+      {
+        filterCR(count >= 0);
+        sawCR = false;
+        
+        // must actively report EOF, lest some CRs get lost.
+        if (readBufferLength == 0 && count >= 0)
+          {
+            readDataChunk();
+          }
+      }
+    
+    if (count > 0)
+      {
+        currentByteCount += count;
+      }
+  }
+  
+  /**
+   * Filter carriage returns in the read buffer.
+   * CRLF becomes LF; CR becomes LF.
+   * @param moreData true iff more data might come from the same source
+   * @see #readDataChunk
+   * @see #readBuffer
+   * @see #readBufferOverflow
+   */
+  private void filterCR(boolean moreData)
+  {
+    int i, j;
 
+    readBufferOverflow = -1;
+    
 loop:
-       for (i = j = readBufferPos; j < readBufferLength; i++, j++) {
-           switch (readBuffer [j]) {
-           case '\r':
-               if (j == readBufferLength - 1) {
-                   if (moreData) {
-                       readBufferOverflow = '\r';
-                       readBufferLength--;
-                   } else      // CR at end of buffer
-                       readBuffer [i++] = '\n';
-                   break loop;
-               } else if (readBuffer [j + 1] == '\n') {
-                   j++;
-               }
-               readBuffer [i] = '\n';
-               break;
-
-           case '\n':
-           default:
-               readBuffer [i] = readBuffer [j];
-               break;
-           }
-       }
-       readBufferLength = i;
-    }
+    for (i = j = readBufferPos; j < readBufferLength; i++, j++)
+      {
+        switch (readBuffer[j])
+          {
+          case '\r':
+            if (j == readBufferLength - 1)
+              {
+                if (moreData)
+                  {
+                    readBufferOverflow = '\r';
+                    readBufferLength--;
+                  }
+                else   // CR at end of buffer
+                  {
+                    readBuffer[i++] = '\n';
+                  }
+                break loop;
+              }
+            else if (readBuffer[j + 1] == '\n')
+              {
+                j++;
+              }
+            readBuffer[i] = '\n';
+            break;
 
-    /**
-     * Convert a buffer of UTF-8-encoded bytes into UTF-16 characters.
-     * <p>When readDataChunk () calls this method, the raw bytes are in 
-     * rawReadBuffer, and the final characters will appear in 
-     * readBuffer.
-     * <p>Note that as of Unicode 3.1, good practice became a requirement,
-     * so that each Unicode character has exactly one UTF-8 representation.
-     * @param count The number of bytes to convert.
-     * @see #readDataChunk
-     * @see #rawReadBuffer
-     * @see #readBuffer
-     * @see #getNextUtf8Byte
-     */
-    private void copyUtf8ReadBuffer (int count)
+          case '\n':
+          default:
+            readBuffer[i] = readBuffer[j];
+            break;
+          }
+      }
+    readBufferLength = i;
+  }
+
+  /**
+   * Convert a buffer of UTF-8-encoded bytes into UTF-16 characters.
+   * <p>When readDataChunk () calls this method, the raw bytes are in 
+   * rawReadBuffer, and the final characters will appear in 
+   * readBuffer.
+   * <p>Note that as of Unicode 3.1, good practice became a requirement,
+   * so that each Unicode character has exactly one UTF-8 representation.
+   * @param count The number of bytes to convert.
+   * @see #readDataChunk
+   * @see #rawReadBuffer
+   * @see #readBuffer
+   * @see #getNextUtf8Byte
+   */
+  private void copyUtf8ReadBuffer(int count)
     throws SAXException, IOException
-    {
-       int     i = 0;
-       int     j = readBufferPos;
-       int     b1;
-       char    c = 0;
-
-       /*
-       // check once, so the runtime won't (if it's smart enough)
-       if (count < 0 || count > rawReadBuffer.length)
-           throw new ArrayIndexOutOfBoundsException (Integer.toString (count));
-       */
-
-       while (i < count) {
-           b1 = rawReadBuffer [i++];
-
-           // Determine whether we are dealing
-           // with a one-, two-, three-, or four-
-           // byte sequence.
-           if (b1 < 0) {
-               if ((b1 & 0xe0) == 0xc0) {
-                   // 2-byte sequence: 00000yyyyyxxxxxx = 110yyyyy 10xxxxxx
-                   c = (char) (((b1 & 0x1f) << 6)
-                               | getNextUtf8Byte (i++, count));
-                   if (c < 0x0080)
-                       encodingError ("Illegal two byte UTF-8 sequence",
-                               c, 0);
-                   //Sec 2.11
-                   // [1] the two-character sequence #xD #xA
-                   // [2] the two-character sequence #xD #x85
-                   if ((c == 0x0085 || c == 0x000a) && sawCR)
-                       continue;
-                   
-                   // Sec 2.11
-                   // [3] the single character #x85
-                   
-                   if(c == 0x0085  && xmlVersion == XML_11)
-                       readBuffer[j++] = '\r';
-               } else if ((b1 & 0xf0) == 0xe0) {
-                   // 3-byte sequence:
-                   // zzzzyyyyyyxxxxxx = 1110zzzz 10yyyyyy 10xxxxxx
-                   // most CJKV characters
-                   c = (char) (((b1 & 0x0f) << 12) |
-                                  (getNextUtf8Byte (i++, count) << 6) |
-                                  getNextUtf8Byte (i++, count));
-                    //sec 2.11
-                   //[4] the single character #x2028
-                   if(c == 0x2028 && xmlVersion == XML_11){
-                       readBuffer[j++] = '\r';
-                       sawCR = true;
-                       continue;
-                   }
-                   if (c < 0x0800 || (c >= 0xd800 && c <= 0xdfff))
-                       encodingError ("Illegal three byte UTF-8 sequence",
-                               c, 0);
-               } else if ((b1 & 0xf8) == 0xf0) {
-                   // 4-byte sequence: 11101110wwwwzzzzyy + 110111yyyyxxxxxx
-                   //     = 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx
-                   // (uuuuu = wwww + 1)
-                   // "Surrogate Pairs" ... from the "Astral Planes"
-                   // Unicode 3.1 assigned the first characters there
-                   int iso646 = b1 & 07;
-                   iso646 = (iso646 << 6) + getNextUtf8Byte (i++, count);
-                   iso646 = (iso646 << 6) + getNextUtf8Byte (i++, count);
-                   iso646 = (iso646 << 6) + getNextUtf8Byte (i++, count);
-
-                   if (iso646 <= 0xffff) {
-                       encodingError ("Illegal four byte UTF-8 sequence",
-                               iso646, 0);
-                   } else {
-                       if (iso646 > 0x0010ffff)
-                           encodingError (
-                               "UTF-8 value out of range for Unicode",
-                               iso646, 0);
-                       iso646 -= 0x010000;
-                       readBuffer [j++] = (char) (0xd800 | (iso646 >> 10));
-                       readBuffer [j++] = (char) (0xdc00 | (iso646 & 0x03ff));
-                       continue;
-                   }
-               } else {
-                   // The five and six byte encodings aren't supported;
-                   // they exceed the Unicode (and XML) range.
-                   encodingError (
-                           "unsupported five or six byte UTF-8 sequence",
-                           0xff & b1, i);
-                   // NOTREACHED
-                   c = 0;
-               }
-           } else {
-               // 1-byte sequence: 000000000xxxxxxx = 0xxxxxxx
-               // (US-ASCII character, "common" case, one branch to here)
-               c = (char) b1;
-           }
-           readBuffer [j++] = c;
-           if (c == '\r')
-               sawCR = true;
-       }
-       // How many characters have we read?
-       readBufferLength = j;
-    }
+  {
+    int i = 0;
+    int j = readBufferPos;
+    int b1;
+    char c = 0;
+    
+    /*
+    // check once, so the runtime won't (if it's smart enough)
+    if (count < 0 || count > rawReadBuffer.length)
+    throw new ArrayIndexOutOfBoundsException (Integer.toString (count));
+     */
 
+    while (i < count)
+      {
+        b1 = rawReadBuffer[i++];
 
-    /**
-     * Return the next byte value in a UTF-8 sequence.
-     * If it is not possible to get a byte from the current
-     * entity, throw an exception.
-     * @param pos The current position in the rawReadBuffer.
-     * @param count The number of bytes in the rawReadBuffer
-     * @return The significant six bits of a non-initial byte in
-     *  a UTF-8 sequence.
-     * @exception EOFException If the sequence is incomplete.
-     */
-    private int getNextUtf8Byte (int pos, int count)
+        // Determine whether we are dealing
+        // with a one-, two-, three-, or four-
+        // byte sequence.
+        if (b1 < 0)
+          {
+            if ((b1 & 0xe0) == 0xc0)
+              {
+                // 2-byte sequence: 00000yyyyyxxxxxx = 110yyyyy 10xxxxxx
+                c = (char) (((b1 & 0x1f) << 6)
+                            | getNextUtf8Byte(i++, count));
+                if (c < 0x0080)
+                  {
+                    encodingError("Illegal two byte UTF-8 sequence",
+                                  c, 0);
+                  }
+                
+                //Sec 2.11
+                // [1] the two-character sequence #xD #xA
+                // [2] the two-character sequence #xD #x85
+                if ((c == 0x0085 || c == 0x000a) && sawCR)
+                  {
+                    continue;
+                  }
+                
+                // Sec 2.11
+                // [3] the single character #x85
+                
+                if (c == 0x0085 && xmlVersion == XML_11)
+                  {
+                    readBuffer[j++] = '\r';
+                  }
+              }
+            else if ((b1 & 0xf0) == 0xe0)
+              {
+                // 3-byte sequence:
+                // zzzzyyyyyyxxxxxx = 1110zzzz 10yyyyyy 10xxxxxx
+                // most CJKV characters
+                c = (char) (((b1 & 0x0f) << 12) |
+                            (getNextUtf8Byte(i++, count) << 6) |
+                            getNextUtf8Byte(i++, count));
+                //sec 2.11
+                //[4] the single character #x2028
+                if (c == 0x2028 && xmlVersion == XML_11)
+                  {
+                    readBuffer[j++] = '\r';
+                    sawCR = true;
+                    continue;
+                  }
+                if (c < 0x0800 || (c >= 0xd800 && c <= 0xdfff))
+                  {
+                    encodingError("Illegal three byte UTF-8 sequence",
+                                  c, 0);
+                  }
+              }
+            else if ((b1 & 0xf8) == 0xf0)
+              {
+                // 4-byte sequence: 11101110wwwwzzzzyy + 110111yyyyxxxxxx
+                //     = 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx
+                // (uuuuu = wwww + 1)
+                // "Surrogate Pairs" ... from the "Astral Planes"
+                // Unicode 3.1 assigned the first characters there
+                int iso646 = b1 & 07;
+                iso646 = (iso646 << 6) + getNextUtf8Byte(i++, count);
+                iso646 = (iso646 << 6) + getNextUtf8Byte(i++, count);
+                iso646 = (iso646 << 6) + getNextUtf8Byte(i++, count);
+                
+                if (iso646 <= 0xffff)
+                  {
+                    encodingError("Illegal four byte UTF-8 sequence",
+                                  iso646, 0);
+                  }
+                else
+                  {
+                    if (iso646 > 0x0010ffff)
+                      {
+                        encodingError("UTF-8 value out of range for Unicode",
+                                      iso646, 0);
+                      }
+                    iso646 -= 0x010000;
+                    readBuffer[j++] = (char) (0xd800 | (iso646 >> 10));
+                    readBuffer[j++] = (char) (0xdc00 | (iso646 & 0x03ff));
+                    continue;
+                  }
+              }
+            else
+              {
+                // The five and six byte encodings aren't supported;
+                // they exceed the Unicode (and XML) range.
+                encodingError("unsupported five or six byte UTF-8 sequence",
+                              0xff & b1, i);
+                // NOTREACHED
+                c = 0;
+              }
+          }
+        else
+          {
+            // 1-byte sequence: 000000000xxxxxxx = 0xxxxxxx
+            // (US-ASCII character, "common" case, one branch to here)
+            c = (char) b1;
+          }
+        readBuffer[j++] = c;
+        if (c == '\r')
+          {
+            sawCR = true;
+          }
+      }
+    // How many characters have we read?
+    readBufferLength = j;
+  }
+   
+  /**
+   * Return the next byte value in a UTF-8 sequence.
+   * If it is not possible to get a byte from the current
+   * entity, throw an exception.
+   * @param pos The current position in the rawReadBuffer.
+   * @param count The number of bytes in the rawReadBuffer
+   * @return The significant six bits of a non-initial byte in
+   *   a UTF-8 sequence.
+   * @exception EOFException If the sequence is incomplete.
+   */
+  private int getNextUtf8Byte(int pos, int count)
     throws SAXException, IOException
-    {
-       int val;
-
-       // Take a character from the buffer
-       // or from the actual input stream.
-       if (pos < count) {
-           val = rawReadBuffer [pos];
-       } else {
-           val = is.read ();
-           if (val == -1) {
-               encodingError ("unfinished multi-byte UTF-8 sequence at EOF",
-                       -1, pos);
-           }
-       }
-
-       // Check for the correct bits at the start.
-       if ((val & 0xc0) != 0x80) {
-           encodingError ("bad continuation of multi-byte UTF-8 sequence",
-                   val, pos + 1);
-       }
-
-       // Return the significant bits.
-       return (val & 0x3f);
-    }
+  {
+    int val;
+    
+    // Take a character from the buffer
+    // or from the actual input stream.
+    if (pos < count)
+      {
+        val = rawReadBuffer[pos];
+      }
+    else
+      {
+        val = is.read();
+        if (val == -1)
+          {
+            encodingError("unfinished multi-byte UTF-8 sequence at EOF",
+                          -1, pos);
+          }
+      }
 
+    // Check for the correct bits at the start.
+    if ((val & 0xc0) != 0x80)
+      {
+        encodingError("bad continuation of multi-byte UTF-8 sequence",
+                      val, pos + 1);
+      }
 
-    /**
-     * Convert a buffer of US-ASCII or ISO-8859-1-encoded bytes into
-     * UTF-16 characters.
-     *
-     * <p>When readDataChunk () calls this method, the raw bytes are in 
-     * rawReadBuffer, and the final characters will appear in 
-     * readBuffer.
-     *
-     * @param count The number of bytes to convert.
-     * @param mask For ASCII conversion, 0x7f; else, 0xff.
-     * @see #readDataChunk
-     * @see #rawReadBuffer
-     * @see #readBuffer
-     */
-    private void copyIso8859_1ReadBuffer (int count, char mask)
-    throws IOException
-    {
-       int i, j;
-       for (i = 0, j = readBufferPos; i < count; i++, j++) {
-           char c = (char) (rawReadBuffer [i] & 0xff);
-           if ((c & mask) != 0)
-               throw new CharConversionException ("non-ASCII character U+"
-                                                   + Integer.toHexString (c));
-           if (c == 0x0085 && xmlVersion == XML_11)
-              c = '\r';        
-           readBuffer [j] = c;
-           if (c == '\r') {
-               sawCR = true;
-           }
-       }
-       readBufferLength = j;
-    }
+    // Return the significant bits.
+    return (val & 0x3f);
+  }
 
+  /**
+   * Convert a buffer of US-ASCII or ISO-8859-1-encoded bytes into
+   * UTF-16 characters.
+   *
+   * <p>When readDataChunk () calls this method, the raw bytes are in 
+   * rawReadBuffer, and the final characters will appear in 
+   * readBuffer.
+   *
+   * @param count The number of bytes to convert.
+   * @param mask For ASCII conversion, 0x7f; else, 0xff.
+   * @see #readDataChunk
+   * @see #rawReadBuffer
+   * @see #readBuffer
+   */
+  private void copyIso8859_1ReadBuffer(int count, char mask)
+    throws IOException
+  {
+    int i, j;
+    for (i = 0, j = readBufferPos; i < count; i++, j++)
+      {
+        char c = (char) (rawReadBuffer[i] & 0xff);
+        if ((c & mask) != 0)
+          {
+            throw new CharConversionException("non-ASCII character U+"
+                                              + Integer.toHexString(c));
+          }
+        if (c == 0x0085 && xmlVersion == XML_11)
+          {
+            c = '\r';
+          }
+        readBuffer[j] = c;
+        if (c == '\r')
+          {
+            sawCR = true;
+          }
+      }
+    readBufferLength = j;
+  }
 
-    /**
-     * Convert a buffer of UCS-2-encoded bytes into UTF-16 characters
-     * (as used in Java string manipulation).
-     *
-     * <p>When readDataChunk () calls this method, the raw bytes are in 
-     * rawReadBuffer, and the final characters will appear in 
-     * readBuffer.
-     * @param count The number of bytes to convert.
-     * @param shift1 The number of bits to shift byte 1.
-     * @param shift2 The number of bits to shift byte 2
-     * @see #readDataChunk
-     * @see #rawReadBuffer
-     * @see #readBuffer
-     */
-    private void copyUcs2ReadBuffer (int count, int shift1, int shift2)
+  /**
+   * Convert a buffer of UCS-2-encoded bytes into UTF-16 characters
+   * (as used in Java string manipulation).
+   *
+   * <p>When readDataChunk () calls this method, the raw bytes are in 
+   * rawReadBuffer, and the final characters will appear in 
+   * readBuffer.
+   * @param count The number of bytes to convert.
+   * @param shift1 The number of bits to shift byte 1.
+   * @param shift2 The number of bits to shift byte 2
+   * @see #readDataChunk
+   * @see #rawReadBuffer
+   * @see #readBuffer
+   */
+  private void copyUcs2ReadBuffer(int count, int shift1, int shift2)
     throws SAXException
-    {
-       int j = readBufferPos;
-
-       if (count > 0 && (count % 2) != 0) {
-           encodingError ("odd number of bytes in UCS-2 encoding", -1, count);
-       }
-       // The loops are faster with less internal brancing; hence two
-       if (shift1 == 0) {      // "UTF-16-LE"
-           for (int i = 0; i < count; i += 2) {
-               char c = (char) (rawReadBuffer [i + 1] << 8);
-               c |= 0xff & rawReadBuffer [i];
-               readBuffer [j++] = c;
-               if (c == '\r')
-                   sawCR = true;
-           }
-       } else {        // "UTF-16-BE"
-           for (int i = 0; i < count; i += 2) {
-               char c = (char) (rawReadBuffer [i] << 8);
-               c |= 0xff & rawReadBuffer [i + 1];
-               readBuffer [j++] = c;
-               if (c == '\r')
-                   sawCR = true;
-           }
-       }
-       readBufferLength = j;
-    }
-
+  {
+    int j = readBufferPos;
+    
+    if (count > 0 && (count % 2) != 0)
+      {
+        encodingError("odd number of bytes in UCS-2 encoding", -1, count);
+      }
+    // The loops are faster with less internal brancing; hence two
+    if (shift1 == 0)
+      {  // "UTF-16-LE"
+        for (int i = 0; i < count; i += 2)
+          {
+            char c = (char) (rawReadBuffer[i + 1] << 8);
+            c |= 0xff & rawReadBuffer[i];
+            readBuffer[j++] = c;
+            if (c == '\r')
+              {
+                sawCR = true;
+              }
+          }
+      }
+    else
+      {  // "UTF-16-BE"
+        for (int i = 0; i < count; i += 2)
+          {
+            char c = (char) (rawReadBuffer[i] << 8);
+            c |= 0xff & rawReadBuffer[i + 1];
+            readBuffer[j++] = c;
+            if (c == '\r')
+              {
+                sawCR = true;
+              }
+          }
+      }
+    readBufferLength = j;
+  }
 
-    /**
-     * Convert a buffer of UCS-4-encoded bytes into UTF-16 characters.
-     *
-     * <p>When readDataChunk () calls this method, the raw bytes are in 
-     * rawReadBuffer, and the final characters will appear in 
-     * readBuffer.
-     * <p>Java has Unicode chars, and this routine uses surrogate pairs
-     * for ISO-10646 values between 0x00010000 and 0x000fffff.  An
-     * exception is thrown if the ISO-10646 character has no Unicode
-     * representation.
-     *
-     * @param count The number of bytes to convert.
-     * @param shift1 The number of bits to shift byte 1.
-     * @param shift2 The number of bits to shift byte 2
-     * @param shift3 The number of bits to shift byte 2
-     * @param shift4 The number of bits to shift byte 2
-     * @see #readDataChunk
-     * @see #rawReadBuffer
-     * @see #readBuffer
-     */
-    private void copyUcs4ReadBuffer (int count, int shift1, int shift2,
-                             int shift3, int shift4)
+  /**
+   * Convert a buffer of UCS-4-encoded bytes into UTF-16 characters.
+   *
+   * <p>When readDataChunk () calls this method, the raw bytes are in 
+   * rawReadBuffer, and the final characters will appear in 
+   * readBuffer.
+   * <p>Java has Unicode chars, and this routine uses surrogate pairs
+   * for ISO-10646 values between 0x00010000 and 0x000fffff.  An
+   * exception is thrown if the ISO-10646 character has no Unicode
+   * representation.
+   *
+   * @param count The number of bytes to convert.
+   * @param shift1 The number of bits to shift byte 1.
+   * @param shift2 The number of bits to shift byte 2
+   * @param shift3 The number of bits to shift byte 2
+   * @param shift4 The number of bits to shift byte 2
+   * @see #readDataChunk
+   * @see #rawReadBuffer
+   * @see #readBuffer
+   */
+  private void copyUcs4ReadBuffer(int count, int shift1, int shift2,
+                                  int shift3, int shift4)
     throws SAXException
-    {
-       int j = readBufferPos;
-
-       if (count > 0 && (count % 4) != 0) {
-           encodingError (
-                   "number of bytes in UCS-4 encoding not divisible by 4",
-                   -1, count);
-       }
-       for (int i = 0; i < count; i += 4) {
-           int value = (((rawReadBuffer [i] & 0xff) << shift1) |
-                     ((rawReadBuffer [i + 1] & 0xff) << shift2) |
-                     ((rawReadBuffer [i + 2] & 0xff) << shift3) |
-                     ((rawReadBuffer [i + 3] & 0xff) << shift4));
-           if (value < 0x0000ffff) {
-               readBuffer [j++] = (char) value;
-               if (value == (int) '\r') {
-                   sawCR = true;
-               }
-           } else if (value < 0x0010ffff) {
-               value -= 0x010000;
-               readBuffer [j++] = (char) (0xd8 | ((value >> 10) & 0x03ff));
-               readBuffer [j++] = (char) (0xdc | (value & 0x03ff));
-           } else {
-               encodingError ("UCS-4 value out of range for Unicode",
-                              value, i);
-           }
-       }
-       readBufferLength = j;
-    }
-
+  {
+    int j = readBufferPos;
+    
+    if (count > 0 && (count % 4) != 0)
+      {
+        encodingError("number of bytes in UCS-4 encoding " +
+                      "not divisible by 4",
+                      -1, count);
+      }
+    for (int i = 0; i < count; i += 4)
+      {
+        int value = (((rawReadBuffer [i] & 0xff) << shift1) |
+                     ((rawReadBuffer [i + 1] & 0xff) << shift2) |
+                     ((rawReadBuffer [i + 2] & 0xff) << shift3) |
+                     ((rawReadBuffer [i + 3] & 0xff) << shift4));
+        if (value < 0x0000ffff)
+          {
+            readBuffer [j++] = (char) value;
+            if (value == (int) '\r')
+              {
+                sawCR = true;
+              }
+          }
+        else if (value < 0x0010ffff)
+          {
+            value -= 0x010000;
+            readBuffer[j++] = (char) (0xd8 | ((value >> 10) & 0x03ff));
+            readBuffer[j++] = (char) (0xdc | (value & 0x03ff));
+          }
+        else
+          {
+            encodingError("UCS-4 value out of range for Unicode",
+                          value, i);
+          }
+      }
+    readBufferLength = j;
+  }
 
-    /**
-     * Report a character encoding error.
-     */
-    private void encodingError (String message, int value, int offset)
+  /**
+   * Report a character encoding error.
+   */
+  private void encodingError(String message, int value, int offset)
     throws SAXException
-    {
-       if (value != -1)
-           message = message + " (character code: 0x" +
-                     Integer.toHexString (value) + ')';
-       error (message);
-    }
+  {
+    if (value != -1)
+      {
+        message = message + " (character code: 0x" +
+          Integer.toHexString(value) + ')';
+        error(message);
+      }
+  }
+  
+  //////////////////////////////////////////////////////////////////////
+  // Local Variables.
+  //////////////////////////////////////////////////////////////////////
+  
+  /**
+   * Re-initialize the variables for each parse.
+   */
+  private void initializeVariables()
+  {
+    // First line
+    line = 1;
+    column = 0;
+    
+    // Set up the buffers for data and names
+    dataBufferPos = 0;
+    dataBuffer = new char[DATA_BUFFER_INITIAL];
+    nameBufferPos = 0;
+    nameBuffer = new char[NAME_BUFFER_INITIAL];
+
+    // Set up the DTD hash tables
+    elementInfo = new HashMap();
+    entityInfo = new HashMap();
+    notationInfo = new HashMap();
+    skippedPE = false;
+
+    // Set up the variables for the current
+    // element context.
+    currentElement = null;
+    currentElementContent = CONTENT_UNDECLARED;
+    
+    // Set up the input variables
+    sourceType = INPUT_NONE;
+    inputStack = new LinkedList();
+    entityStack = new LinkedList();
+    externalEntity = null;
+    tagAttributePos = 0;
+    tagAttributes = new String[100];
+    rawReadBuffer = new byte[READ_BUFFER_MAX];
+    readBufferOverflow = -1;
+
+    scratch = new InputSource();
+
+    inLiteral = false;
+    expandPE = false;
+    peIsError = false;
+    
+    doReport = false;
+    
+    inCDATA = false;
+    
+    symbolTable = new Object[SYMBOL_TABLE_LENGTH][];
+  }
 
+  static class ExternalIdentifiers
+  {
 
-    //////////////////////////////////////////////////////////////////////
-    // Local Variables.
-    //////////////////////////////////////////////////////////////////////
+    String publicId;
+    String systemId;
+    String baseUri;
 
-    /**
-     * Re-initialize the variables for each parse.
-     */
-    private void initializeVariables ()
+    ExternalIdentifiers()
     {
-       // First line
-       line = 1;
-       column = 0;
-
-       // Set up the buffers for data and names
-       dataBufferPos = 0;
-       dataBuffer = new char [DATA_BUFFER_INITIAL];
-       nameBufferPos = 0;
-       nameBuffer = new char [NAME_BUFFER_INITIAL];
-
-       // Set up the DTD hash tables
-       elementInfo = new Hashtable ();
-       entityInfo = new Hashtable ();
-       notationInfo = new Hashtable ();
-       skippedPE = false;
-
-       // Set up the variables for the current
-       // element context.
-       currentElement = null;
-       currentElementContent = CONTENT_UNDECLARED;
-
-       // Set up the input variables
-       sourceType = INPUT_NONE;
-       inputStack = new Stack ();
-       entityStack = new Stack ();
-       externalEntity = null;
-       tagAttributePos = 0;
-       tagAttributes = new String [100];
-       rawReadBuffer = new byte [READ_BUFFER_MAX];
-       readBufferOverflow = -1;
-
-       scratch = new InputSource ();
-
-       inLiteral = false;
-       expandPE = false;
-       peIsError = false;
-
-       doReport = false;
-
-       inCDATA = false;
-
-       symbolTable = new Object [SYMBOL_TABLE_LENGTH][];
     }
 
+    ExternalIdentifiers(String publicId, String systemId, String baseUri)
+    {
+      this.publicId = publicId;
+      this.systemId = systemId;
+      this.baseUri = baseUri;
+    }
+    
+  }
 
-    //
-    // The current XML handler interface.
-    //
-    private SAXDriver  handler;
-
-    //
-    // I/O information.
-    //
-    private Reader     reader;         // current reader
-    private InputStream        is;             // current input stream
-    private int                line;           // current line number
-    private int                column;         // current column number
-    private int                sourceType;     // type of input source
-    private Stack      inputStack;     // stack of input soruces
-    private URLConnection externalEntity; // current external entity
-    private int                encoding;       // current character encoding
-    private int                currentByteCount; // bytes read from current source
-    private InputSource        scratch;        // temporary
-
-    //
-    // Buffers for decoded but unparsed character input.
-    //
-    private char       readBuffer [];
-    private int                readBufferPos;
-    private int                readBufferLength;
-    private int                readBufferOverflow;  // overflow from last data chunk.
-
-
-    //
-    // Buffer for undecoded raw byte input.
-    //
-    private final static int READ_BUFFER_MAX = 16384;
-    private byte       rawReadBuffer [];
-
-
-    //
-    // Buffer for attribute values, char refs, DTD stuff.
-    //
-    private static int DATA_BUFFER_INITIAL = 4096;
-    private char       dataBuffer [];
-    private int                dataBufferPos;
-
-    //
-    // Buffer for parsed names.
-    //
-    private static int NAME_BUFFER_INITIAL = 1024;
-    private char       nameBuffer [];
-    private int                nameBufferPos;
-
-    //
-    // Save any standalone flag
-    //
-    private boolean    docIsStandalone;
-
-    //
-    // Hashtables for DTD information on elements, entities, and notations.
-    // Populated until we start ignoring decls (because of skipping a PE)
-    //
-    private Hashtable  elementInfo;
-    private Hashtable  entityInfo;
-    private Hashtable  notationInfo;
-    private boolean    skippedPE;
-
-
-    //
-    // Element type currently in force.
-    //
-    private String     currentElement;
-    private int                currentElementContent;
-
-    //
-    // Stack of entity names, to detect recursion.
-    //
-    private Stack      entityStack;
-
-    //
-    // PE expansion is enabled in most chunks of the DTD, not all.
-    // When it's enabled, literals are treated differently.
-    //
-    private boolean    inLiteral;
-    private boolean    expandPE;
-    private boolean    peIsError;
-
-    //
-    // can't report entity expansion inside two constructs:
-    // - attribute expansions (internal entities only)
-    // - markup declarations (parameter entities only)
-    //
-    private boolean    doReport;
-
-    //
-    // Symbol table, for caching interned names.
-    //
-    // These show up wherever XML names or nmtokens are used:  naming elements,
-    // attributes, PIs, notations, entities, and enumerated attribute values.
-    //
-    // NOTE:  This hashtable doesn't grow.  The default size is intended to be
-    // rather large for most documents.  Example:  one snapshot of the DocBook
-    // XML 4.1 DTD used only about 350 such names.  As a rule, only pathological
-    // documents (ones that don't reuse names) should ever see much collision.
-    //
-    // Be sure that SYMBOL_TABLE_LENGTH always stays prime, for best hashing.
-    // "2039" keeps the hash table size at about two memory pages on typical
-    // 32 bit hardware.
-    //
-    private final static int SYMBOL_TABLE_LENGTH = 2039;
+  static class EntityInfo
+  {
 
-    private Object     symbolTable [][];
+    int type;
+    ExternalIdentifiers ids;
+    String value;
+    String notationName;
+    
+  }
 
-    //
-    // Hash table of attributes found in current start tag.
-    //
-    private String     tagAttributes [];
-    private int                tagAttributePos;
+  static class AttributeDecl
+  {
+    
+    String type;
+    String value;
+    int valueType;
+    String enumeration;
+    String defaultValue;
 
-    //
-    // Utility flag: have we noticed a CR while reading the last
-    // data chunk?  If so, we will have to go back and normalise
-    // CR or CR/LF line ends.
-    //
-    private boolean    sawCR;
+  }
 
-    //
-    // Utility flag: are we in CDATA?  If so, whitespace isn't ignorable.
-    // 
-    private boolean    inCDATA;
+  static class ElementDecl
+  {
     
-    //
-    // Xml version.
-    //  
-    private static final int XML_10 = 0; 
-    private static final int XML_11 = 1; 
-    private int        xmlVersion = XML_10;
+    int contentType;
+    String contentModel;
+    HashMap attributes;
+  
+  }
+  static class Input
+  {
+    
+    int sourceType;
+    URLConnection externalEntity;
+    char[] readBuffer;
+    int readBufferPos;
+    int readBufferLength;
+    int line;
+    int encoding;
+    int readBufferOverflow;
+    InputStream is;
+    int currentByteCount;
+    int column;
+    Reader reader;
+    
+  }
+  
 }
+
index 96c9c72..dacf8b1 100644 (file)
@@ -70,246 +70,305 @@ import gnu.xml.pipeline.ValidationConsumer;
  *
  * @author David Brownell
  */
-public final class XmlReader implements XMLReader
+public final class XmlReader
+  implements XMLReader
 {
-    private SAXDriver          aelfred2 = new SAXDriver ();
-    private EventFilter                filter = new EventFilter ();
-    private boolean            isValidating;
-    private boolean            active;
 
-
-    /** Constructs a SAX Parser.  */
-    public XmlReader ()
-       { }
-
-    /**
-     * Constructs a SAX Parser, optionally treating validity errors
-     * as if they were fatal errors.
-     */
-    public XmlReader (boolean invalidIsFatal)
-    {
-       if (invalidIsFatal)
-           setErrorHandler (new DefaultHandler2 () {
-               public void error (SAXParseException e)
-               throws SAXException
-                   { throw e; }
-               });
-    }
-
-    /**
-     * <b>SAX2</b>: Returns the object used to report the logical
-     * content of an XML document.
-     */
-    public ContentHandler getContentHandler ()
-       { return filter.getContentHandler (); }
-
-    /**
-     * <b>SAX2</b>: Assigns the object used to report the logical
-     * content of an XML document.
-     * @exception IllegalStateException if called mid-parse
-     */
-    public void setContentHandler (ContentHandler handler)
+  static class FatalErrorHandler
+    extends DefaultHandler2
+  {
+    
+    public void error(SAXParseException e)
+      throws SAXException
     {
-       if (active)
-           throw new IllegalStateException ("already parsing");
-       filter.setContentHandler (handler);
+      throw e;
     }
-
-    /**
-     * <b>SAX2</b>: Returns the object used to process declarations related
-     * to notations and unparsed entities.
-     */
-    public DTDHandler getDTDHandler ()
-       { return filter.getDTDHandler (); }
-
-    /**
-     * <b>SAX1</b> Assigns DTD handler
-     * @exception IllegalStateException if called mid-parse
-     */
-    public void setDTDHandler (DTDHandler handler)
-    {
-       if (active)
-           throw new IllegalStateException ("already parsing");
-       filter.setDTDHandler (handler);
-    }
-
-    /**
-     * <b>SAX2</b>: Returns the object used when resolving external
-     * entities during parsing (both general and parameter entities).
-     */
-    public EntityResolver getEntityResolver ()
-       { return aelfred2.getEntityResolver (); }
-
-    /** <b>SAX1</b> Assigns parser's entity resolver */
-    public void setEntityResolver (EntityResolver handler)
-       { aelfred2.setEntityResolver (handler); }
-
-    /**
-     * <b>SAX2</b>: Returns the object used to receive callbacks for XML
-     * errors of all levels (fatal, nonfatal, warning); this is never null;
-     */
-    public ErrorHandler getErrorHandler ()
-       { return aelfred2.getErrorHandler (); }
-
-    /**
-     * <b>SAX1</b> Assigns error handler
-     * @exception IllegalStateException if called mid-parse
-     */
-    public void setErrorHandler (ErrorHandler handler)
-    {
-       if (active)
-           throw new IllegalStateException ("already parsing");
-       aelfred2.setErrorHandler (handler);
-    }
-
-    /**
-     * <b>SAX2</b>:  Assigns the specified property.
-     * @exception IllegalStateException if called mid-parse
-     */
-    public void setProperty (String propertyId, Object value)
+    
+  }
+  
+  private SAXDriver aelfred2 = new SAXDriver();
+  private EventFilter filter = new EventFilter();
+  private boolean isValidating;
+  private boolean active;
+
+  /**
+   * Constructs a SAX Parser.
+   */
+  public XmlReader()
+  {
+  }
+
+  /**
+   * Constructs a SAX Parser, optionally treating validity errors
+   * as if they were fatal errors.
+   */
+  public XmlReader(boolean invalidIsFatal)
+  {
+    if (invalidIsFatal)
+      {
+        setErrorHandler(new FatalErrorHandler());
+      }
+  }
+  
+  /**
+   * <b>SAX2</b>: Returns the object used to report the logical
+   * content of an XML document.
+   */
+  public ContentHandler getContentHandler()
+  {
+    return filter.getContentHandler();
+  }
+
+  /**
+   * <b>SAX2</b>: Assigns the object used to report the logical
+   * content of an XML document.
+   * @exception IllegalStateException if called mid-parse
+   */
+  public void setContentHandler(ContentHandler handler)
+  {
+    if (active)
+      {
+        throw new IllegalStateException("already parsing");
+      }
+    filter.setContentHandler(handler);
+  }
+
+  /**
+   * <b>SAX2</b>: Returns the object used to process declarations related
+   * to notations and unparsed entities.
+   */
+  public DTDHandler getDTDHandler()
+  {
+    return filter.getDTDHandler();
+  }
+
+  /**
+   * <b>SAX1</b> Assigns DTD handler
+   * @exception IllegalStateException if called mid-parse
+   */
+  public void setDTDHandler(DTDHandler handler)
+  {
+    if (active)
+      {
+        throw new IllegalStateException("already parsing");
+      }
+    filter.setDTDHandler(handler);
+  }
+  
+  /**
+   * <b>SAX2</b>: Returns the object used when resolving external
+   * entities during parsing (both general and parameter entities).
+   */
+  public EntityResolver getEntityResolver()
+  {
+    return aelfred2.getEntityResolver();
+  }
+
+  /**
+   * <b>SAX1</b> Assigns parser's entity resolver
+   */
+  public void setEntityResolver(EntityResolver handler)
+  {
+    aelfred2.setEntityResolver(handler);
+  }
+
+  /**
+   * <b>SAX2</b>: Returns the object used to receive callbacks for XML
+   * errors of all levels (fatal, nonfatal, warning); this is never null;
+   */
+  public ErrorHandler getErrorHandler()
+  {
+    return aelfred2.getErrorHandler();
+  }
+
+  /**
+   * <b>SAX1</b> Assigns error handler
+   * @exception IllegalStateException if called mid-parse
+   */
+  public void setErrorHandler(ErrorHandler handler)
+  {
+    if (active)
+      {
+        throw new IllegalStateException("already parsing");
+      }
+    aelfred2.setErrorHandler(handler);
+  }
+
+  /**
+   * <b>SAX2</b>:  Assigns the specified property.
+   * @exception IllegalStateException if called mid-parse
+   */
+  public void setProperty(String propertyId, Object value)
     throws SAXNotRecognizedException, SAXNotSupportedException
-    {
-       if (active)
-           throw new IllegalStateException ("already parsing");
-       if (getProperty (propertyId) != value)
-           filter.setProperty (propertyId, value);
-    }
-
-    /**
-     * <b>SAX2</b>:  Returns the specified property.
-     */
-    public Object getProperty (String propertyId)
+  {
+    if (active)
+      {
+        throw new IllegalStateException("already parsing");
+      }
+    if (getProperty(propertyId) != value)
+      {
+        filter.setProperty(propertyId, value);
+      }
+  }
+
+  /**
+   * <b>SAX2</b>:  Returns the specified property.
+   */
+  public Object getProperty(String propertyId)
     throws SAXNotRecognizedException
-    {
-       if ((SAXDriver.PROPERTY + "declaration-handler")
-                       .equals (propertyId)
-               || (SAXDriver.PROPERTY + "lexical-handler")
-                       .equals (propertyId))
-           return filter.getProperty (propertyId);
-       throw new SAXNotRecognizedException (propertyId);
-    }
-
-    private void forceValidating ()
+  {
+    if ((SAXDriver.PROPERTY + "declaration-handler").equals(propertyId)
+        || (SAXDriver.PROPERTY + "lexical-handler").equals(propertyId))
+      {
+        return filter.getProperty(propertyId);
+      }
+    throw new SAXNotRecognizedException(propertyId);
+  }
+  
+  private void forceValidating()
     throws SAXNotRecognizedException, SAXNotSupportedException
-    {
-       aelfred2.setFeature (
-           SAXDriver.FEATURE + "namespace-prefixes",
-           true);
-       aelfred2.setFeature (
-           SAXDriver.FEATURE + "external-general-entities",
-           true);
-       aelfred2.setFeature (
-           SAXDriver.FEATURE + "external-parameter-entities",
-           true);
-    }
-
-    /**
-     * <b>SAX2</b>:  Sets the state of features supported in this parser.
-     * Note that this parser requires reporting of namespace prefixes when
-     * validating.
-     */
-    public void setFeature (String featureId, boolean state)
+  {
+    aelfred2.setFeature(SAXDriver.FEATURE + "namespace-prefixes",
+                        true);
+    aelfred2.setFeature(SAXDriver.FEATURE + "external-general-entities",
+                        true);
+    aelfred2.setFeature(SAXDriver.FEATURE + "external-parameter-entities",
+                        true);
+  }
+
+  /**
+   * <b>SAX2</b>:  Sets the state of features supported in this parser.
+   * Note that this parser requires reporting of namespace prefixes when
+   * validating.
+   */
+  public void setFeature(String featureId, boolean state)
     throws SAXNotRecognizedException, SAXNotSupportedException
-    {
-       boolean value = getFeature (featureId);
-
-       if (state == value)
-           return;
-
-       if ((SAXDriver.FEATURE + "validation").equals (featureId)) {
-           if (active)
-               throw new SAXNotSupportedException ("already parsing");
-           if (state)
-               forceValidating ();
-           isValidating = state;
-       } else
-           aelfred2.setFeature (featureId, state);
-    }
-
-    /**
-     * <b>SAX2</b>: Tells whether this parser supports the specified feature.
-     * At this time, this directly parallels the underlying SAXDriver,
-     * except that validation is optionally supported.
-     *
-     * @see SAXDriver
-     */
-    public boolean getFeature (String featureId)
+  {
+    boolean value = getFeature(featureId);
+
+    if (state == value)
+      {
+        return;
+      }
+
+    if ((SAXDriver.FEATURE + "validation").equals(featureId))
+      {
+        if (active)
+          {
+            throw new SAXNotSupportedException("already parsing");
+          }
+        if (state)
+          {
+            forceValidating();
+          }
+        isValidating = state;
+      }
+    else
+      {
+        aelfred2.setFeature(featureId, state);
+      }
+  }
+
+  /**
+   * <b>SAX2</b>: Tells whether this parser supports the specified feature.
+   * At this time, this directly parallels the underlying SAXDriver,
+   * except that validation is optionally supported.
+   *
+   * @see SAXDriver
+   */
+  public boolean getFeature(String featureId)
     throws SAXNotRecognizedException, SAXNotSupportedException
-    {
-       if ((SAXDriver.FEATURE + "validation").equals (featureId))
-           return isValidating;
-
-       return aelfred2.getFeature (featureId);
-    }
-
-    /**
-     * <b>SAX1</b>: Sets the locale used for diagnostics; currently,
-     * only locales using the English language are supported.
-     * @param locale The locale for which diagnostics will be generated
-     */
-    public void setLocale (Locale locale)
+  {
+    if ((SAXDriver.FEATURE + "validation").equals(featureId))
+      {
+        return isValidating;
+      }
+
+    return aelfred2.getFeature(featureId);
+  }
+
+  /**
+   * <b>SAX1</b>: Sets the locale used for diagnostics; currently,
+   * only locales using the English language are supported.
+   * @param locale The locale for which diagnostics will be generated
+   */
+  public void setLocale(Locale locale)
     throws SAXException
-       { aelfred2.setLocale (locale); }
+  {
+    aelfred2.setLocale(locale);
+  }
 
-    /**
-     * <b>SAX1</b>: Preferred API to parse an XML document, using a
-     * system identifier (URI).
+  /**
+   * <b>SAX1</b>: Preferred API to parse an XML document, using a
+   * system identifier (URI).
      */
-    public void parse (String systemId)
+  public void parse(String systemId)
     throws SAXException, IOException
-    {
-       parse (new InputSource (systemId));
-    }
-
-    /**
-     * <b>SAX1</b>: Underlying API to parse an XML document, used
-     * directly when no URI is available.  When this is invoked,
-     * and the parser is set to validate, some features will be
-     * automatically reset to appropriate values:  for reporting
-     * namespace prefixes, and incorporating external entities.
-     *
-     * @param source The XML input source.
-     *
-     * @exception IllegalStateException if called mid-parse
-     * @exception SAXException The handlers may throw any SAXException,
-     * and the parser normally throws SAXParseException objects.
-     * @exception IOException IOExceptions are normally through through
-     * the parser if there are problems reading the source document.
-     */
-    public void parse (InputSource source)
+  {
+    parse(new InputSource(systemId));
+  }
+
+  /**
+   * <b>SAX1</b>: Underlying API to parse an XML document, used
+   * directly when no URI is available.  When this is invoked,
+   * and the parser is set to validate, some features will be
+   * automatically reset to appropriate values:  for reporting
+   * namespace prefixes, and incorporating external entities.
+   *
+   * @param source The XML input source.
+   *
+   * @exception IllegalStateException if called mid-parse
+   * @exception SAXException The handlers may throw any SAXException,
+    and the parser normally throws SAXParseException objects.
+   * @exception IOException IOExceptions are normally through through
+    the parser if there are problems reading the source document.
+   */
+  public void parse(InputSource source)
     throws SAXException, IOException
-    {
-       EventFilter     next;
-       boolean         nsdecls;
-
-       synchronized (aelfred2) {
-           if (active)
-               throw new IllegalStateException ("already parsing");
-           active = true;
-       }
-
-       // set up the output pipeline
-       if (isValidating) {
-           forceValidating ();
-           next = new ValidationConsumer (filter);
-       } else
-           next = filter;
-
-       // connect pipeline and error handler
-       // don't let _this_ call to bind() affect xmlns* attributes
-       nsdecls = aelfred2.getFeature (
-           SAXDriver.FEATURE + "namespace-prefixes");
-       EventFilter.bind (aelfred2, next);
-       if (!nsdecls)
-           aelfred2.setFeature (
-               SAXDriver.FEATURE + "namespace-prefixes",
-               false);
-
-       // parse, clean up
-       try {
-           aelfred2.parse (source);
-       } finally {
-           active = false;
-       }
-    }
+  {
+    EventFilter next;
+    boolean nsdecls;
+
+    synchronized (aelfred2)
+      {
+        if (active)
+          {
+            throw new IllegalStateException("already parsing");
+          }
+        active = true;
+      }
+
+    // set up the output pipeline
+    if (isValidating)
+      {
+        forceValidating();
+        next = new ValidationConsumer(filter);
+      }
+    else
+      {
+        next = filter;
+      }
+
+    // connect pipeline and error handler
+    // don't let _this_ call to bind() affect xmlns* attributes
+    nsdecls = aelfred2.getFeature(SAXDriver.FEATURE + "namespace-prefixes");
+    EventFilter.bind(aelfred2, next);
+    if (!nsdecls)
+      {
+        aelfred2.setFeature(SAXDriver.FEATURE + "namespace-prefixes",
+                            false);
+      }
+
+    // parse, clean up
+    try
+      {
+        aelfred2.parse(source);
+      }
+    finally
+      {
+        active = false;
+      }
+  }
+
 }
+
index 56280f3..e31c543 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.3 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
index c0739ba..dfbfba4 100644 (file)
@@ -53,6 +53,7 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.StringTokenizer;
+import gnu.gcj.runtime.BootClassLoader;
 
 /**
  * java.lang.VMClassLoader is a package-private helper for VMs to implement
@@ -82,6 +83,10 @@ final class VMClassLoader
 
   static final HashMap definedPackages = new HashMap();
 
+  // This is a helper for handling java.endorsed.dirs.  It is null
+  // until we've initialized the system, at which point it is created.
+  static BootClassLoader bootLoader;
+
   /**
    * Helper to define a class using a string of bytes. This assumes that
    * the security checks have already been performed, if necessary.
@@ -153,6 +158,8 @@ final class VMClassLoader
    */
   static URL getResource(String name)
   {
+    if (bootLoader != null)
+      return bootLoader.bootGetResource(name);
     return null;
   }
 
@@ -168,6 +175,8 @@ final class VMClassLoader
    */
   static Enumeration getResources(String name) throws IOException
   {
+    if (bootLoader != null)
+      return bootLoader.bootGetResources(name);
     return EmptyEnumeration.getInstance();
   }
 
@@ -287,6 +296,8 @@ final class VMClassLoader
 
   static native ClassLoader getSystemClassLoaderInternal();
 
+  static native void initBootLoader(String libdir);
+
   static ClassLoader getSystemClassLoader()
   {
     // This method is called as the initialization of systemClassLoader,
@@ -310,6 +321,7 @@ final class VMClassLoader
                               + loader, ex);
          }
       }
+
     return default_sys;
   }
 }
index f48a6fd..b936947 100644 (file)
@@ -126,16 +126,16 @@ java::lang::Class::getClassLoader (void)
        s->checkPermission (new RuntimePermission (JvNewStringLatin1 ("getClassLoader")));
     }
 
-  // The spec requires us to return `null' for primitive classes.  In
-  // other cases we have the option of returning `null' for classes
-  // loaded with the bootstrap loader.  All gcj-compiled classes which
-  // are linked into the application used to return `null' here, but
-  // that confuses some poorly-written applications.  It is a useful
-  // and apparently harmless compatibility hack to simply never return
-  // `null' instead.
-  if (isPrimitive ())
-    return NULL;
-  return loader ? loader : ClassLoader::systemClassLoader;
+  // This particular 'return' has been changed a couple of times over
+  // libgcj's history.  This particular approach is a little weird,
+  // because it means that all classes linked into the application
+  // will see NULL for their class loader.  This may confuse some
+  // applications that aren't expecting this; the solution is to use a
+  // different linking model for these applications.  In the past we
+  // returned the system class loader in this case, but that is
+  // incorrect.  Also, back then we didn't have other linkage models
+  // to fall back on.
+  return loader;
 }
 
 java::lang::reflect::Constructor *
index dfb976a..c3b1f7e 100644 (file)
@@ -43,6 +43,7 @@ details.  */
 #include <java/io/Serializable.h>
 #include <java/lang/Cloneable.h>
 #include <java/util/HashMap.h>
+#include <gnu/gcj/runtime/BootClassLoader.h>
 
 // Size of local hash table.
 #define HASH_LEN 1013
@@ -106,7 +107,7 @@ void
 _Jv_RegisterInitiatingLoader (jclass klass, java::lang::ClassLoader *loader)
 {
   if (! loader)
-    loader = java::lang::ClassLoader::systemClassLoader;
+    loader = java::lang::VMClassLoader::bootLoader;
   loader->loadedClasses->put(klass->name->toString(), klass);
 }
 
@@ -116,7 +117,7 @@ void
 _Jv_UnregisterInitiatingLoader (jclass klass, java::lang::ClassLoader *loader)
 {
   if (! loader)
-    loader = java::lang::ClassLoader::systemClassLoader;
+    loader = java::lang::VMClassLoader::bootLoader;
   loader->loadedClasses->remove(klass->name->toString());
 }
 
@@ -211,13 +212,14 @@ _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
   // See if the class was already loaded by this loader.  This handles
   // initiating loader checks, as we register classes with their
   // initiating loaders.
-  java::lang::ClassLoader *sys = java::lang::ClassLoader::systemClassLoader;
+
+  java::lang::ClassLoader *boot = java::lang::VMClassLoader::bootLoader;
   java::lang::ClassLoader *real = loader;
   if (! real)
-    real = sys;
+    real = boot;
   jstring sname = name->toString();
   // We might still be bootstrapping the VM, in which case there
-  // won't be a system class loader yet.
+  // won't be a bootstrap class loader yet.
   jclass klass = real ? real->findLoadedClass (sname) : NULL;
 
   if (! klass)
@@ -230,16 +232,16 @@ _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
          // If "loader" delegated the loadClass operation to another
          // loader, explicitly register that it is also an initiating
          // loader of the given class.
-         java::lang::ClassLoader *delegate = (loader == sys
+         java::lang::ClassLoader *delegate = (loader == boot
                                               ? NULL
                                               : loader);
          if (klass && klass->getClassLoaderInternal () != delegate)
            _Jv_RegisterInitiatingLoader (klass, loader);
        }
-      else if (sys)
+      else if (boot)
        {
          // Load using the bootstrap loader jvmspec 5.3.1.
-         klass = sys->loadClass (sname, false); 
+         klass = java::lang::VMClassLoader::loadClass (sname, false); 
 
          // Register that we're an initiating loader.
          if (klass)
@@ -250,9 +252,21 @@ _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
          // Not even a bootstrap loader, try the built-in cache.
          klass = _Jv_FindClassInCache (name);
 
-         if (bootstrap_index == BOOTSTRAP_CLASS_LIST_SIZE)
-           abort ();
-         bootstrap_class_list[bootstrap_index++] = klass;
+         bool found = false;
+         for (int i = 0; i < bootstrap_index; ++i)
+           {
+             if (bootstrap_class_list[i] == klass)
+               {
+                 found = true;
+                 break;
+               }
+           }
+         if (! found)
+           {
+             if (bootstrap_index == BOOTSTRAP_CLASS_LIST_SIZE)
+               abort ();
+             bootstrap_class_list[bootstrap_index++] = klass;
+           }
        }
     }
   else
index 9a539d7..c59e1d6 100644 (file)
@@ -25,6 +25,7 @@ details.  */
 #include <java/lang/VMCompiler.h>
 #include <gnu/gcj/runtime/VMClassLoader.h>
 #include <gnu/gcj/runtime/SystemClassLoader.h>
+#include <gnu/gcj/runtime/BootClassLoader.h>
 #include <java/lang/ClassLoader.h>
 #include <java/lang/Class.h>
 #include <java/lang/Throwable.h>
@@ -66,9 +67,9 @@ java::lang::VMClassLoader::defineClass (java::lang::ClassLoader *loader,
       // until we're done loading.
       JvSynchronize sync (klass);
 
-      // Record the defining loader.  For the system class loader, we
-      // record NULL.
-      if (loader != java::lang::ClassLoader::systemClassLoader)
+      // Record the defining loader.  For the bootstrap class loader,
+      // we record NULL.
+      if (loader != bootLoader)
        klass->loader = loader;
 
       if (name != 0)
@@ -122,11 +123,25 @@ java::lang::VMClassLoader::getPrimitiveClass (jchar type)
   return _Jv_FindClassFromSignature (sig, NULL);
 }
 
+void
+java::lang::VMClassLoader::initBootLoader(jstring libdir)
+{
+  bootLoader = new gnu::gcj::runtime::BootClassLoader(libdir);
+}
+
 jclass
 java::lang::VMClassLoader::loadClass(jstring name, jboolean resolve)
 {
-  _Jv_Utf8Const *utf = _Jv_makeUtf8Const (name);
-  jclass klass = _Jv_FindClassInCache (utf);
+  // We try the boot loader first, so that the endorsed directory
+  // overrides compiled-in classes.
+  jclass klass = NULL;
+  if (bootLoader)
+    klass = bootLoader->bootLoadClass(name);
+  if (! klass)
+    {
+      _Jv_Utf8Const *utf = _Jv_makeUtf8Const (name);
+      klass = _Jv_FindClassInCache (utf);
+    }
   if (klass)
     {
       // We never want to return a class without its supers linked.
index 9281711..a916edd 100644 (file)
@@ -55,6 +55,7 @@ details.  */
 #include <java/lang/OutOfMemoryError.h>
 #include <java/lang/System.h>
 #include <java/lang/VMThrowable.h>
+#include <java/lang/VMClassLoader.h>
 #include <java/lang/reflect/Modifier.h>
 #include <java/io/PrintStream.h>
 #include <java/lang/UnsatisfiedLinkError.h>
@@ -1130,8 +1131,9 @@ _Jv_CreateJavaVM (JvVMInitArgs* vm_args)
   // of VMClassLoader.
   _Jv_InitClass (&java::lang::ClassLoader::class$);
 
-  // Set up the system class loader.
+  // Set up the system class loader and the bootstrap class loader.
   gnu::gcj::runtime::VMClassLoader::initialize();
+  java::lang::VMClassLoader::initBootLoader(JvNewStringLatin1(TOOLEXECLIBDIR));
 
   _Jv_RegisterBootstrapPackages();
 
@@ -1209,7 +1211,10 @@ _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
       java::lang::System::err->println (JvNewStringLatin1 
         ("Exception during runtime initialization"));
       t->printStackTrace();
-      runtime->exit (1);
+      if (runtime)
+       runtime->exit (1);
+      // In case the runtime creation failed.
+      ::exit (1);
     }
 
   _Jv_AttachCurrentThread (main_thread);
index f307e7a..f4388aa 100644 (file)
@@ -495,7 +495,7 @@ _Jv_StackTrace::non_system_trace_fn (_Jv_UnwindState *state)
     {
       classLoader = frame->klass->getClassLoaderInternal();
 #ifdef INTERPRETER
-      if (classLoader != NULL && classLoader != ClassLoader::systemClassLoader)
+      if (classLoader != NULL)
         {
           state->trace_data = (void *) classLoader;
          return _URC_NORMAL_STOP;
index 3336bcb..66b60af 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.3 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.