name = Character.toUpperCase(name.charAt(0)) + name.substring(1);
  public void createTable(String name, List<Column> columns)    throws IOException  {    if(getTable(name) != null) {      throw new IllegalArgumentException(          "Cannot create table with name of existing table");    }        //There is some really bizarre bug in here where tables that start with    //the letters a-m (only lower case) won't open in Access. :)    name = Character.toUpperCase(name.charAt(0)) + name.substring(1);        //We are creating a new page at the end of the db for the tdef.    int pageNumber = _pageChannel.getPageCount();        ByteBuffer buffer = _pageChannel.createPageBuffer();        writeTableDefinition(buffer, columns, pageNumber);        writeColumnDefinitions(buffer, columns);         //End of tabledef    buffer.put((byte) 0xff);    buffer.put((byte) 0xff);    int tableDefLen = buffer.position();    buffer.putShort(2, (short)(_format.PAGE_SIZE - tableDefLen - 8)); // overwrite page free space    buffer.putInt(8, tableDefLen);  //Overwrite length of data for this page           //Write the tdef and usage map pages to disk.    _pageChannel.writeNewPage(buffer);    _pageChannel.writeNewPage(createUsageMapDefinitionBuffer(pageNumber));    _pageChannel.writeNewPage(createUsageMapDataBuffer()); //Usage map        //Add this table to our internal list.    addTable(name, new Integer(pageNumber));        //Add this table to system tables    addToSystemCatalog(name, pageNumber);    addToAccessControlEntries(pageNumber);      }