class IdContainer {

    public boolean init()
    {
        boolean result = true;
        try
        {
            if ( !fs.fileExists( file ) )
            {
                createEmptyIdFile( fs, file, 0, false );
                result = false;
            }

            fileChannel = fs.open( file, OpenMode.READ_WRITE );
            initialHighId = readAndValidateHeader();
            markAsSticky();

            this.freeIdKeeper = new FreeIdKeeper( new OffsetChannel( fileChannel, HEADER_SIZE ), grabSize, aggressiveReuse );
            closed = false;
        }
        catch ( IOException e )
        {
            throw new UnderlyingStorageException( "Unable to init id file " + file, e );
        }
        return result;
    }

    public  IdContainer( FileSystemAbstraction fs, File file, int grabSize, boolean aggressiveReuse );

}