anchor.diff:      p_lazy_impl p x.Value st
   
   let p_hole () = 
  -    let h = ref (None : 'T pickler option)
  +    let h = ref (None : ('T -> WriterState -> unit) option)
       (fun f -> h := Some f),(fun x st -> match !h with Some f -> f x st | None -> pfailwith st "p_hole: unfilled hole")
  +
  +let p_hole2 () = 
  +    let h = ref (None : ('Arg -> 'T -> WriterState -> unit) option)
  +    (fun f -> h := Some f),(fun arg x st -> match !h with Some f -> f arg x st | None -> pfailwith st "p_hole2: unfilled hole")
   
   let u_array_core f n st =
       let res = Array.zeroCreate n
  
positive.code:     | 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_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
      | TType_ucase (uc,tinst)            -> p_byte 7 st; p_tup2 p_ucref p_tys (uc,tinst) st)
  
  
negative.code:     p_ranges (x.ValReprInfo |> Option.map (fun _ -> x.val_range, x.DefinitionRange)) st
      
      let isStructThisArgPos = x.IsMember && checkForInRefStructThisArg st x.Type
      p_ty2 isStructThisArgPos x.val_type st
  
      p_int64 x.val_flags.PickledBits st
      p_option p_member_info x.MemberInfo st
  