anchor.diff:                    Storage = None; Next = null; 
                     Prev = null; Tag = Some tag; 
                     Code = null; CodePrevTag = None
  -                  CallCount = 0; JumpDistance = 0 }
  +                  CallCount = 0; JumpDistance = 0; IsDisposed = false }
   
               new(context, storage) = 
                   { Context = context
                     Storage = Some storage; Next = null; 
                     Prev = null; Tag = None; 
                     Code = null; CodePrevTag = None
  -                  CallCount = 0; JumpDistance = 0 }
  +                  CallCount = 0; JumpDistance = 0; IsDisposed = false }
           end
   
       type Program<'i, 'k, 'instruction, 'fragment, 'a>
  
positive.code:                         false
                  )
  
              member x.LinkPrev(caller : IAdaptiveObject) =
                  x.EvaluateAlways caller (fun () ->
                      let prevFragment = x.Prev.Storage.Value
                      let myFragment = x.Storage.Value
  
                      if not (x.Context.isNext prevFragment myFragment) then
                          let distance = x.Context.writeNext prevFragment myFragment
                          Interlocked.Add(x.Context.jumpDistance, distance - x.JumpDistance) |> ignore
                          x.JumpDistance <- distance
                  )
  
              member x.LinkNext(caller : IAdaptiveObject) =
                  x.EvaluateAlways caller (fun () ->
                      let nextFragment = x.Next.Storage.Value
                      let myFragment = x.Storage.Value
  
                      if not (x.Context.isNext myFragment nextFragment) then
                          let distance = x.Context.writeNext myFragment nextFragment
                          Interlocked.Add(x.Context.jumpDistance, distance - x.JumpDistance) |> ignore
                          x.JumpDistance <- distance
                  )
  
              member x.Dispose() =
                  x.Prev <- null
                  x.Next <- null
  
                  Interlocked.Add(x.Context.jumpDistance, -x.JumpDistance) |> ignore
                  x.JumpDistance <- 0
  
negative.code:                     relinkSet.Add prev |> ignore
  
                      // insert the new fragment in the linked list.
                      fragment.Prev <- prev
                      fragment.Next <- next
                      next.Prev <- fragment
                      prev.Next <- fragment
  
                      // finally return the new fragment
  