code: @Override
  	public GeometryColumns createFeatureTableWithMetadata(
  			GeometryColumns geometryColumns, BoundingBox boundingBox,
  			long srsId, List<FeatureColumn> columns) {
  
  		// Get the SRS
  		SpatialReferenceSystem srs = getSrs(srsId);
  
  		// Create the Geometry Columns table
  		createGeometryColumnsTable();
  
  		// Create the user feature table
  		FeatureTable table = new FeatureTable(geometryColumns.getTableName(),
  				columns);
  		createFeatureTable(table);
  
  		try {
  			// Create the contents
  			Contents contents = new Contents();
  			contents.setTableName(geometryColumns.getTableName());
  			contents.setDataType(ContentsDataType.FEATURES);
  			contents.setIdentifier(geometryColumns.getTableName());
  			// contents.setLastChange(new Date());
  			if (boundingBox != null) {
  				contents.setMinX(boundingBox.getMinLongitude());
  				contents.setMinY(boundingBox.getMinLatitude());
  				contents.setMaxX(boundingBox.getMaxLongitude());
  				contents.setMaxY(boundingBox.getMaxLatitude());
  			}
  			contents.setSrs(srs);
  			getContentsDao().create(contents);
  
  			table.setContents(contents);
  			
  			// Create new geometry columns
  			geometryColumns.setContents(contents);
  			geometryColumns.setSrs(contents.getSrs());
  			getGeometryColumnsDao().create(geometryColumns);
  
  		} catch (RuntimeException e) {
  			deleteTableQuietly(geometryColumns.getTableName());
  			throw e;
  		} catch (SQLException e) {
  			deleteTableQuietly(geometryColumns.getTableName());
  			throw new GeoPackageException(
  					"Failed to create table and metadata: "
  							+ geometryColumns.getTableName(), e);
  		}
  
  		return geometryColumns;
  	}
docs: {@inheritDoc}