anchor.diff:  
               if calls.Add n.range then
                   Interlocked.Add(&activeSize, int64 size) |> ignore
  -                Interlocked.Increment(progress.ActiveNodeCount) |> ignore
  +                Interlocked.Increment(progress.activeNodeCount) |> ignore
   
   
           let deactivate (n : GeometryRef) =
  
positive.code: 
              let cts = new System.Threading.CancellationTokenSource()
              let result = ref Unchecked.defaultof<_>
              let r = geometriesNew.GetOrAdd(n, (cts, result))
              try
                  Async.RunSynchronously(LoadIntoPool.runWithCompensations result effects, cancellationToken= cts.Token)
              with | :? OperationCanceledException as o -> ()
              r
                      
          member x.Remove(n : LodDataNode) =
                match geometriesNew.TryRemove n with
                  | (true,(cts,r)) ->
                      Interlocked.Decrement(progress.ExpectedNodeCount) |> ignore
                      cts.Cancel()
                      cts.Dispose()
                  | _ -> printfn "wtf"
  //            match geometries.TryRemove n with
  //                | (true,v) ->
  //                    Interlocked.Decrement(&desiredCount) |> ignore
  //                    match Interlocked.Exchange(v,Unchecked.defaultof<_>) with
  //                        | Choice1Of2 ct -> 
  //                            Log.line "cancelling import."
  //                            ct.Cancel()
  //                        | Choice2Of2 g -> 
  //                            deactivate g
  //                    true
  //                | _ -> 
  //                    Log.warn "failed to find node for removal: %A" n.id
  //                    false
  
  
  
          member x.Activate() =
  
negative.code:                 async {
                      while true do
                          do! Async.Sleep(1000)
                          printfn "active = %A / desired = %A / count = %A / inactiveCnt=%d / inactive=%A / rasterizeTime=%f [seconds]" progress.activeNodeCount.Value progress.expectedNodeCount.Value geometries.Count inactive.Count inactiveSize (float progress.rasterizeTime.Value / float TimeSpan.TicksPerSecond)
                          ()
                  }
  
  
              for i in 1..4 do
                  Async.StartAsTask(deltaProcessing, cancellationToken = cancel.Token) |> ignore
              Async.StartAsTask(pruning, cancellationToken = cancel.Token) |> ignore
  