code: public static final DatabaseInformation newDatabaseInformation(
              Database db) {
  
          Class c = null;
  
          try {
              c = Class.forName("org.hsqldb_voltpatches.dbinfo.DatabaseInformationFull");
          } catch (Exception e) {
              try {
                  c = Class.forName("org.hsqldb_voltpatches.dbinfo.DatabaseInformationMain");
              } catch (Exception e2) {}
          }
  
          try {
              Class[]     ctorParmTypes = new Class[]{ Database.class };
              Object[]    ctorParms     = new Object[]{ db };
              Constructor ctor = c.getDeclaredConstructor(ctorParmTypes);
  
              return (DatabaseInformation) ctor.newInstance(ctorParms);
          } catch (Exception e) {
              e.printStackTrace();
          }
  
          return new DatabaseInformation(db);
      }
docs: Factory method returns the fullest system table producer
  implementation available.  This instantiates implementations beginning
  with the most complete, finally choosing an empty table producer
  implemenation (this class) if no better instance can be constructed.
  @param db The Database object for which to produce system tables
  @return the fullest system table producer
  implementation available