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_bool pkey.MemberIsOverride st 
      p_string pkey.LogicalName st 
      p_int pkey.TotalArgCount st 
      p_option p_ty key.TypeForLinkage st
  
  let rec p_vref ctxt x st = 
      match x with 
  
negative.code: 
  let fill_p_attribs,p_attribs = p_hole()
  
  // In F# 4.5, the type of the "this" pointer for structs is considered to be inref for the purposes of checking the implementation
  // of the struct.  However for backwards compat reaons we can't serialize this as the type.
  let checkForInRefStructThisArg st ty = 
      let g = st.oglobals
      let _, tauTy = tryDestForallTy g ty
      isFunTy g tauTy && isFunTy g (rangeOfFunTy g tauTy) && isInByrefTy g (domainOfFunTy g tauTy)
  
  let p_nonlocal_val_ref (nlv:NonLocalValOrMemberRef) st =
      let a = nlv.EnclosingEntity
      let key = nlv.ItemKey
  