code: @Override
  	public FeatureDao getFeatureDao(GeometryColumns geometryColumns) {
  
  		if (geometryColumns == null) {
  			throw new GeoPackageException("Non null "
  					+ GeometryColumns.class.getSimpleName()
  					+ " is required to create "
  					+ FeatureDao.class.getSimpleName());
  		}
  
  		// Read the existing table and create the dao
  		FeatureTableReader tableReader = new FeatureTableReader(geometryColumns);
  		FeatureConnection userDb = new FeatureConnection(database);
  		final FeatureTable featureTable = tableReader.readTable(userDb);
  		featureTable.setContents(geometryColumns.getContents());
  		FeatureDao dao = new FeatureDao(getName(), database, userDb,
  				geometryColumns, featureTable);
  
  		// If the GeoPackage is writable and the feature table has a RTree Index
  		// extension, create the SQL functions
  		if (writable) {
  			RTreeIndexExtension rtree = new RTreeIndexExtension(this);
  			rtree.createFunctions(featureTable);
  		}
  
  		return dao;
  	}
docs: {@inheritDoc}