def find_matching_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
          # We've found a space that is an exact match. Remove it from the
          # list and return it.
          address = node.blob_address
          node.delete_node
          return [ address, size ]
        else
          break
        end
      end

      return nil
    end
def find_matching_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
          # We've found a space that is an exact match. Remove it from the
          # list and return it.
          address = node.blob_address
          node.delete_node
          return [ address, size ]
        else
          break
        end
      end

      return nil
    end
Return an address/size touple that matches exactly the requested size.
 Return nil if nothing was found.
 @param size [Integer] size of the free space
 @return [Array or nil] address, size touple or nil