def find_equal_or_larger_space(size)
      node = self

      loop do
        if node.size < size
          if node.larger
            # The current space is not yet large enough. If we have a larger sub
            # node check that one next.
            node = node.larger
          else
            break
          end
        elsif node.size == size ||
              node.size >= size * 2 + FlatFileBlobHeader::LENGTH
          # We've found a space that is either a perfect match or is large
          # enough to hold at least one more record. Remove it from the list and
          # return it.
          actual_size = node.size
          address = node.blob_address
          node.delete_node
          return [ address, actual_size ]
        elsif node.smaller
          # The current space is larger than size but not large enough for an
          # additional record. So check if we have a perfect match in the
          # smaller brach if available.
          node = node.smaller
        else
          break
        end
      end

      return nil
    end
def find_equal_or_larger_space(size)
      node = self

      loop do
        if node.size < size
          if node.larger
            # The current space is not yet large enough. If we have a larger sub
            # node check that one next.
            node = node.larger
          else
            break
          end
        elsif node.size == size ||
              node.size >= size * 2 + FlatFileBlobHeader::LENGTH
          # We've found a space that is either a perfect match or is large
          # enough to hold at least one more record. Remove it from the list and
          # return it.
          actual_size = node.size
          address = node.blob_address
          node.delete_node
          return [ address, actual_size ]
        elsif node.smaller
          # The current space is larger than size but not large enough for an
          # additional record. So check if we have a perfect match in the
          # smaller brach if available.
          node = node.smaller
        else
          break
        end
      end

      return nil
    end
Return an address/size touple that matches the requested size or is
 larger than the requested size plus the overhead for another blob.
 Return nil if nothing was found.
 @param size [Integer] size of the free space
 @return [Array or nil] address, size touple or nil