anchor.diff:                          | Struct(name, fields) ->
                               
                               let! fields = 
  -                                fields |> List.mapSpvi (fun i (t,n) -> spirv { let! tid = getTypeId t in return (tid, i, n)})
  +                                fields |> List.mapSpvi (fun i (t,n,d) -> spirv { let! tid = getTypeId t in return (tid, i, n,d)})
   
                               let! id = newId
  -                            yield OpTypeStruct(id, fields |> List.map (fun (t,_,_) -> t) |> List.toArray)
  -
  -                            for (_,i,n) in fields do
  +                            yield OpTypeStruct(id, fields |> List.map (fun (t,_,_,_) -> t) |> List.toArray)
  +
  +                            for (_,i,n,_) in fields do
                                   yield OpMemberName(id, uint32 i, n)
  +
  +                            for (_,i,_,d) in fields do
  +                                for (dec, args) in d do
  +                                    yield OpMemberDecorate(id, uint32 i, dec, args)
   
                               yield OpName(id, name)
   
  
positive.code:         test2()
  
  
          let myType = Struct("sepp", [Type.V2f, "v0"; Type.Int32, "v1"])
  
          let v = new Var("a", Type.UInt8, true)
          let v2 = new Var("b", Type.UInt8, true)
  
negative.code:                     let mutable offset = 0
  
                      for i in 0..fields.Length-1 do
                          let (t,_,_) = fields.[i]
                          let! (iid, size) = compileConstant t (skip offset data)
                          offset <- offset + size
                          ids.[i] <- iid
  