anchor.diff:                          yield "#load \"Setup.fsx\""
                           yield "open Setup"
                           yield "open Aardvark.Base"
  +                        yield "open FShade.Imperative"
                           yield "open FShade"
                           yield ""
   
  
positive.code:                         str
  
                  let samplers =
                      e.Uniforms 
                          |> Map.toList
                          |> List.choose (fun (samplerName, u) ->
                              match u.uniformValue, u.uniformType with
  
negative.code:                                         let i = f.Interpolation
                                          let typ = Aardvark.Base.ReflectionHelpers.getPrettyName f.PropertyType
  
                                          let atts = f.GetCustomAttributesData() |> Seq.toList |> List.filter (fun a -> typeof<SemanticAttribute>.IsAssignableFrom a.AttributeType)
  
                                          let atts =
                                              [   
                                                  for a in atts do
                                                      let args = a.ConstructorArguments |> Seq.toList |> List.map (fun a -> match a.Value with | :? string as str -> "\"" + str + "\"" | _ -> string a) |> String.concat ", "
                                                      let name = a.Constructor.DeclaringType.Name
  
                                                      let name =
                                                          if name.EndsWith "Attribute" then name.Substring(0, name.Length - 9)
                                                          else name
  
                                                      if a.AttributeType.Assembly.GetName().Name = "FShade.Core" then
                                                          match args with
                                                              | "" -> yield name
                                                              | _ -> yield sprintf "%s(%s)" name args
                                                      else
                                                          yield sprintf "Semantic(\"%s\")" sem
  
  //
  //                                                if sem <> f.Name then
  //                                                    yield sprintf "Semantic(\"%s\")" sem
  
                                                  if i <> InterpolationMode.Default then
                                                      yield sprintf "Interpolation(InterpolationMode.%A)" i
  