anchor.diff:  type VertexAttribute<'T> =
       {
           name: string
  +        mutable location: int
           mutable value: 'T
  -        mutable location: int
       }
   
       member this.Set value = this.value <- value
   
  -type Shader =
  +type ShaderProgram =
       {
           programId: int
           mutable isInitialized: bool
  
positive.code: 
              let render =
                  {
                      ShaderProgramId = shader.programId
                      TextureId = material.Texture.Buffer.Id
                      IdRef = idRef
                  }
  
negative.code:                             Meshes = ResizeArray ()
                              IdRefs = ResizeArray ()
                          }
  
                      // Need to do this to make sure we get an id.
                      texture.Buffer.TryBufferData () |> ignore
  
                      bucketLookup.Add (texture.Buffer.Id, (texture, bucket))
                      bucket
              bucket
  
          let add shader =
              let shaderProgram = shader.ShaderProgram
              let bucketLookup =
                  match this.Lookup.TryGetValue (shaderProgram.programId) with
                  | true, (bucketLookup) -> bucketLookup
                  | _, _ ->
                      let bucketLookup = Dictionary ()
                      this.Lookup.Add (shader.ShaderProgram.programId, bucketLookup)
                      bucketLookup
  
              let bucket = addTexture bucketLookup material.Texture
  
  