anchor.diff:          inherit ManagedBufferWriter(remove)
           static let asize = sizeof<'a> |> nativeint
   
  -        override x.Release() = ()
  -            // should not be necessary as this is typically the PrimitiveValueConverter
  -            //let mutable foo = 0
  -            //data.Outputs.Consume(&foo) |> ignore
  +        override x.Release() = 
  +            // in case the data Mod is a PrimitiveValueConverter, it would be garbage collected and removal of the output is not essential
  +            // in case the data Mod is directly from the application (no converter), removing the Writer from its Output is essential
  +            data.Outputs.Remove(x) |> ignore
   
           override x.Write(token, target) =
               let v = data.GetValue(token)
  
positive.code:                 let writer = 
                      bufferWriters.GetOrCreate(view, fun view ->
                          isNew <- true
                          let remove w =
                              x.Dirty.Remove w |> ignore
                              bufferWriters.Remove view |> ignore
                              let mutable foo = 0
                              view.Buffer.Outputs.Consume(&foo) |> ignore
  
                          let data = BufferView.download 0 (int count) view
                          let real : IMod<'a[]> = data |> PrimitiveValueConverter.convertArray view.ElementType
                          let w = new ManagedBufferWriter<'a>(remove, real, store)
                          x.Dirty.Add w |> ignore
                          w
  
negative.code:         inherit ManagedBufferWriter(remove)
          static let asize = sizeof<'a> |> nativeint
              
          override x.Release() = 
              // in case the data Mod is a PrimitiveValueConverter, it would be garbage collected and removal of the output is not essential
              // in case the data Mod is directly from the application (no converter), removing the Writer from its Output is essential
              data.Outputs.Remove(x) |> ignore
  
          override x.Write(token, target) =
              let v = data.GetValue(token)
  