Object invoke(String method, Class[] argtypes, Object[] args) throws InvocationTargetException {
   try {
     Method m = fact.getClass().getMethod(method, argtypes);
     return m.invoke(fact, args);
   } catch (NoSuchMethodException e) {
     throw new RuntimeException(e);
   } catch (IllegalAccessException e) {
     throw new RuntimeException(e);
   }
 }
 public boolean isNamespaceAware() {
   return fact.isNamespaceAware();
 }
 public void setCoalescing(boolean coalescing) {
   fact.setCoalescing(coalescing);
 }
 public void setIgnoringComments(boolean ignoreComments) {
   fact.setIgnoringComments(ignoreComments);
 }
 public void setExpandEntityReferences(boolean expandEntityRef) {
   fact.setExpandEntityReferences(expandEntityRef);
 }
 public void setIgnoringElementContentWhitespace(boolean whitespace) {
   fact.setIgnoringElementContentWhitespace(whitespace);
 }
 public void setValidating(boolean validating) {
   fact.setValidating(validating);
 }
 public void setNamespaceAware(boolean awareness) {
   fact.setNamespaceAware(awareness);
 }
 public Object getAttribute(String name) {
   return fact.getAttribute(name);
 }
 public void setAttribute(String name, Object value) {
   fact.setAttribute(name, value);
 }
 /** Forward to real factory, set error handler */
 public DocumentBuilder newDocumentBuilder() throws ParserConfigurationException {
   DocumentBuilder db = fact.newDocumentBuilder();
   log.debug3("Created builder: " + db);
   db.setErrorHandler(new MyErrorHandler());
   return db;
 }
 public boolean isCoalescing() {
   return fact.isCoalescing();
 }
 public boolean isIgnoringComments() {
   return fact.isIgnoringComments();
 }
 public boolean isExpandEntityReferences() {
   return fact.isExpandEntityReferences();
 }
 public boolean isIgnoringElementContentWhitespace() {
   return fact.isIgnoringElementContentWhitespace();
 }
 public boolean isValidating() {
   return fact.isValidating();
 }