functions will be called in the reverse order of the corresponding
   calls to <code class="code">finalise</code>.  If <code class="code">finalise</code> is called in the same order
   as the values are allocated, that means each value is finalised
   before the values it depends upon.  Of course, this becomes
   false if additional dependencies are introduced by assignments.
<p>

   In the presence of multiple OCaml threads it should be assumed that
   any particular finaliser may be executed in any of the