anchor.diff:        Interlocked.Increment(&this.version) |> ignore
         exitWriteLockIf &this.locker entered
         #if PRERELEASE
  -      if this.version <> this.nextVersion then raise (ApplicationException("this.orderVersion <> this.nextVersion"))
  +      if entered && this.version <> this.nextVersion then raise (ApplicationException("this.orderVersion <> this.nextVersion"))
         #else
  -      if this.version <> this.nextVersion then Environment.FailFast("this.orderVersion <> this.nextVersion")
  +      if entered && this.version <> this.nextVersion then Environment.FailFast("this.orderVersion <> this.nextVersion")
         #endif
   
     member this.AddLast(key, value):unit =
  
positive.code:         let version = if doSpin then Volatile.Read(&this.source.version) else this.source.orderVersion
          result <-
          /////////// Start read-locked code /////////////
            if this.cursorVersion = this.source.orderVersion then
              if this.index < (this.source.size - 1) then
                newIndex <- this.index + 1
                newKey <- this.source.GetKeyByIndexUnchecked(newIndex)
  
negative.code:             Interlocked.Increment(&this.version) |> ignore
              exitWriteLockIf &this.locker entered
              #if PRERELEASE
              if entered && this.version <> this.nextVersion then raise (ApplicationException("this.orderVersion <> this.nextVersion"))
              #else
              if entered && this.version <> this.nextVersion then Environment.FailFast("this.orderVersion <> this.nextVersion")
              #endif
  
  
  