anchor.diff:          sbloc.AppendLine(sprintf "  let mut %s: %s = Default::default();" vname (rustTypeToString rt)) |> ignore
       |LVSizeOf aname ->
         let raname=native2rustName parms aname
  -      sbloc.AppendLine(sprintf "  let mut %s: %s = std::mem::size_of_val(%s);" vname (rustTypeToString rt) raname) |> ignore
  +      sbloc.AppendLine(sprintf "  let mut %s: %s = size_of_val(%s);" vname (rustTypeToString rt) raname) |> ignore
     let locals=sbloc.ToString()
     // TODO: generate call to native function
     let native_parms=
  
positive.code:   |(_,_,_,RustParameter(rname,_)) -> rname
    |_ -> raise <| new System.Exception("Unreachable")
  
  // parms is list of tuples (parameterName, parameterAnnotation, nativeParameterType, parameterSource)
  let generateMethodFromEquippedAnnotation (mname, nname, mannot, parms, rty, rvsource)=
    // let's find return type and return expression
    let (rrt,rexpr)=
      match rvsource with
  
negative.code:       else
          sb.AppendLine("#[repr(C)]") |> ignore
          if sfields.IsEmpty then
            sb.AppendFormat("pub struct {0};",name).AppendLine() |> ignore;
          else
            sb.AppendFormat("pub struct {0} {{",name).AppendLine() |> ignore;
            for CStructElem(fname,fty,None) in sfields do
              sb.AppendFormat("  {0} : {1},", fname, tyToRust fty).AppendLine() |> ignore
            sb.AppendLine("}").AppendLine() |> ignore
  