@Override
    public Table createTable(final String tableName, List<Class<?>> columnTypes) throws IOException {
        checkName(tableName);
        String fullPath = tableDir + File.separator + tableName;

        if (columnTypes == null || columnTypes.size() == 0) {
            throw new IllegalArgumentException("wrong type (null)");
        }

        File file = new File(fullPath);

        writeLock.lock();
        try {
        if (file.exists()) {
                return null;
            }

            if (!file.mkdir()) {
                throw new MultiDataBaseException("Cannot create table " + tableName);
            }

            DataBase table = new DataBase(fullPath, this, columnTypes);
            tableInUse.put(tableName, table);
            return table;
        } finally {
            writeLock.unlock();
        }
    }