code: SchemaFactory createInstance( String className ) {
          try {
              if (debug) debugPrintln("instantiating "+className);
              Class clazz;
              if( classLoader!=null )
                  clazz = classLoader.loadClass(className);
              else
                  clazz = Class.forName(className);
              if(debug)       debugPrintln("loaded it from "+which(clazz));
              Object o = clazz.newInstance();
  
              if( o instanceof SchemaFactory )
                  return (SchemaFactory)o;
  
              if (debug) debugPrintln(className+" is not assignable to "+SERVICE_CLASS.getName());
          }
          // The VM ran out of memory or there was some other serious problem. Re-throw.
          catch (VirtualMachineError vme) {
              throw vme;
          }
          // ThreadDeath should always be re-thrown
          catch (ThreadDeath td) {
              throw td;
          }
          catch (Throwable t) {
              debugPrintln("failed to instantiate "+className);
              if(debug)   t.printStackTrace();
          }
          return null;
      }
docs: <p>Creates an instance of the specified and returns it.</p>
  
  @param className
  fully qualified class name to be instantiated.
  
  @return null
  if it fails. Error messages will be printed by this method.