anchor.diff:          x.Uniforms |> Map.iter (fun _ (ul) -> ul.Dispose())
           x.UniformBuffers |> Map.iter (fun _ (ub) -> ub.Dispose())
           x.Program.Dispose() 
  +        x.DisposeAllViews.Dispose()
   
       interface IDisposable with
           member x.Dispose() = x.Dispose()
  
positive.code:                                     match rj.InstanceAttributes.TryGetAttribute (v.semantic |> Symbol.Create) with
                                          | Some value ->
                                              let dep = x.CreateBuffer(value.Buffer)
                                              let view = createView (AttributeFrequency.PerInstances 1) value dep
                                              (v.attributeIndex, (dep, view, value.Buffer))
                                          | _ -> 
                                              failwithf "could not get attribute %A" v.semantic
  
negative.code:                                 None
                  )
              )
  
          let disposeAllViews =
              { new IDisposable with member x.Dispose() = createdViews |> Seq.iter (fun d -> d.Dispose()) }
  
          // finally return the PreparedRenderObject
          {
  