anchor.diff:                p_byte 0 st; p_tys l st
       | TType_app(ERefNonLocal nleref,[]) -> p_byte 1 st; p_simpletyp nleref st
       | TType_app (tc,tinst)              -> p_byte 2 st; p_tup2 (p_tcref "typ") p_tys (tc,tinst) st
  -    | TType_fun (d,r)                   -> p_byte 3 st; p_tup2 p_ty p_ty (d,r) st
  +    | TType_fun (d,r)                   -> 
  +        p_byte 3 st
  +        p_ty d st
  +        st.isStructThisArgPos <- false
  +        p_ty r st
       | TType_var r                       -> p_byte 4 st; p_tpref r st
       | TType_forall (tps,r)              -> p_byte 5 st; p_tup2 p_tyar_specs p_ty (tps,r) st
       | TType_measure unt                 -> p_byte 6 st; p_measure_expr unt st
  
positive.code:     p_option p_string x.ValCompiledName st
      // only keep range information on published values, not on optimization data
      p_ranges (x.ValReprInfo |> Option.map (fun _ -> x.val_range, x.DefinitionRange)) st
      p_ty x.val_type st
      p_int64 x.val_flags.PickledBits st
      p_option p_member_info x.MemberInfo st
      p_attribs x.Attribs st
  
negative.code:     onlerefs: Table<int * int[]> 
      osimpletys: Table<int>
      oglobals : TcGlobals
      mutable isStructThisArgPos : bool
      ofile : string
      /// Indicates if we are using in-memory format, where we store XML docs as well
      oInMem : bool
  