code: @Override
  	public final int delete(int handle) throws DataStoreException
      {
          if (SAFE_MODE) checkHandle(handle);
          
          int previousHandle = previousBlock[handle];
            
          int current = handle;
          int nextHandle = -1;
          while (current != -1)
          {
              nextHandle = nextBlock[current];
              boolean isEndBlock = (flags[current] & FLAG_END_BLOCK) > 0;
              
              // Clear block entry
              flags[current] = 0;
              allocatedSize[current] = -1;
              previousBlock[current] = -1;
              nextBlock[current] = -1;
              locks.clear(current);
              
              // Update used blocks count
              blocksInUse--;
              
              writeAllocationBlock(current);
              
              if (isEndBlock)
                  break;  
              current = nextHandle;
          }     
          // Reconnect chain
          if (nextHandle != -1)
          {
              previousBlock[nextHandle] = previousHandle;
              writeAllocationBlock(nextHandle);
          }
          if (previousHandle != -1)
          {
              nextBlock[previousHandle] = nextHandle;
              writeAllocationBlock(previousHandle);
          }
  
          // Update first block if necessary
          if (firstBlock == handle)
          {
              firstBlock = nextHandle;
              writeFirstBlock();
          }
          
          size--;
          
          flush();
          
          // Find previous object start from previous block handle
          while (previousHandle != -1 && (flags[previousHandle] & FLAG_START_BLOCK) == 0)
          	previousHandle = previousBlock[previousHandle];
          
          return previousHandle;
      }
docs: /*
  (non-Javadoc)
  @see net.timewalker.ffmq4.utils.store.ChainedDataStore#delete(int)