code: public static <Data extends AbstractKVStorable> DRUMS<Data> createOrOpenTable(AbstractHashFunction hashFunction,
              DRUMSParameterSet<Data> gp) throws IOException {
  
          File databaseDirectoryFile = new File(gp.DATABASE_DIRECTORY);
          DRUMS<Data> drums = null;
          if (databaseDirectoryFile.exists()) {
              drums = openTable(AccessMode.READ_WRITE, gp);
          } else {
              drums = createTable(hashFunction, gp);
          }
          return drums;
      }
docs: Creates or opens the table. If the directory doesn't exists it will be created.
  
  @param hashFunction
  the hash function, decides where to store/search elements
  @param gp
  pointer to the {@link DRUMSParameterSet} used by the {@link DRUMS} to open
  
  @see #openTable(AccessMode, DRUMSParameterSet)
  @see #createTable(AbstractHashFunction, DRUMSParameterSet)
  
  @return a DRUMS instance
  
  @throws IOException