   constructor: (@directory, @options) ->
     @cache          = {}
     @mru            = {}
+    # TODO OUTGOING
     @mru.core       = @createMRU()
     @mru.balance    = @createMRU()
     @nextAddress    = 0

  #
  # It is important that the page objects are unique, that we do not represent a
  # page file with more than one page object, because the page objects house the
  # locking mechanisms.
  #
  # The cache entires are linked to form a doubly-linked list. A doubly-linked
  # list of entries has a head node that has a null address, so that end of the
  # list is unambiguous.
  #
  # There are two linked list heads. A core list of cache entries, and a
  # balancing list for pages that were loaded for the sake of item counts while
  # calculating a merge. The when it comes time to purge, the balance list is
  # purged first.
  #
  # If a page cached for balance calculations, is needed for other purposes, it
  # is unlinked from the balance list, and linked to the head of the core list.
  #
  # We always move a page to the front of the core list when we reference it
  # during b&#x2011;tree descent.

    suffix or= ""
    padding = "00000000".substring(0, 8 - String(address).length)
    "#{@directory}/segment#{padding}#{address}#{suffix}"

  # TODO I thought we broke this up?

  # Move a replacement page file into place. Unlink the existing page file, then
  # rename the new page file to the permanent name of the page file.
