docs: public Deferred<Boolean> flushCollisions(final TSDB tsdb) {
      if (!store_failures) {
        collisions.clear();
        return Deferred.fromResult(true);
      }
      
      final byte[] row_key = new byte[TREE_ID_WIDTH + 1];
      System.arraycopy(idToBytes(tree_id), 0, row_key, 0, TREE_ID_WIDTH);
      row_key[TREE_ID_WIDTH] = COLLISION_ROW_SUFFIX;
      
      final byte[][] qualifiers = new byte[collisions.size()][];
      final byte[][] values = new byte[collisions.size()][];
  
      int index = 0;
      for (Map.Entry<String, String> entry : collisions.entrySet()) {
        qualifiers[index] = new byte[COLLISION_PREFIX.length + 
                                          (entry.getKey().length() / 2)];
        System.arraycopy(COLLISION_PREFIX, 0, qualifiers[index], 0, 
            COLLISION_PREFIX.length);
        final byte[] tsuid = UniqueId.stringToUid(entry.getKey());
        System.arraycopy(tsuid, 0, qualifiers[index], 
            COLLISION_PREFIX.length, tsuid.length);
  
        values[index] = entry.getValue().getBytes(CHARSET);
        index++;
      }
  
      final PutRequest put = new PutRequest(tsdb.treeTable(), row_key, 
          TREE_FAMILY, qualifiers, values);
      collisions.clear();
      
      /**
       * Super simple callback used to convert the Deferred&lt;Object&gt; to a 
       * Deferred&lt;Boolean&gt; so that it can be grouped with other storage
       * calls
       */
      final class PutCB implements Callback<Deferred<Boolean>, Object> {
  
        @Override
        public Deferred<Boolean> call(Object result) throws Exception {
          return Deferred.fromResult(true);
        }
        
      }
        
      return tsdb.getClient().put(put).addCallbackDeferring(new PutCB());
    }