code: protected int addBlock(Collection<Record> candidates,
                           Map.Entry entry) {
      Block block = (Block) entry.getValue();
      String[] ids = block.getIds();
      int ix = 0;
      for (; ix < block.size(); ix++)
        candidates.add(idmap.get(ids[ix]));
      return ix;
    }
  
    protected NavigableMap makeMap(KeyFunction keyfunc) {
      if (db == null)
        init();
  
      String name = keyfunc.getClass().getName();
      if (!db.exists(name))
        return db.createTreeMap(name)
          .valueSerializer(new BlockSerializer())
          .make();
      else
        return db.getTreeMap(name);
    }
  
    // ----- SERIALIZERS
  
    static class BlockSerializer implements Serializable, Serializer<Block> {
      public void serialize(DataOutput out, Block block) throws IOException {
        int size = block.size();
        out.writeInt(size);
        String[] ids = block.getIds();
        for (int ix = 0; ix < size; ix++)
          out.writeUTF(ids[ix]);
      }
  
      public Block deserialize(DataInput in, int available) throws IOException {
        int free = in.readInt();
        String[] ids = new String[free];
        for (int ix = 0; ix < free; ix++)
          ids[ix] = in.readUTF();
        return new Block(free, ids);
      }
  
      public int fixedSize() {
        return -1;
      }
    }
  
    static class RecordSerializer implements Serializable, Serializer<CompactRecord> {
      public void serialize(DataOutput out, CompactRecord value) throws IOException {
        int free = value.getFree();
        out.writeInt(free);
        String[] s = value.getArray();
        for (int ix = 0; ix < free; ix++)
          out.writeUTF(s[ix]);
      }
  
      public CompactRecord deserialize(DataInput in, int available) throws IOException {
        int free = in.readInt();
        String[] s = new String[free];
        for (int ix = 0; ix < free; ix++)
          s[ix] = in.readUTF();
        return new CompactRecord(free, s);
      }
  
      public int fixedSize() {
        return -1;
      }
    }
  }
docs: --- PLUG IN EXTENSIONS