anchor.diff:  let [<Literal>] itag_cpblk         = 66   // currently unused, added for forward compat  
   
   let simple_instrs = 
  -    [ itag_add,        AI_add;
  -      itag_add_ovf,    AI_add_ovf;
  -      itag_add_ovf_un, AI_add_ovf_un;
  -      itag_and,        AI_and;  
  -      itag_div,        AI_div; 
  -      itag_div_un,     AI_div_un;
  -      itag_ceq,        AI_ceq;  
  -      itag_cgt,        AI_cgt ;
  -      itag_cgt_un,     AI_cgt_un;
  -      itag_clt,        AI_clt;
  -      itag_clt_un,     AI_clt_un;
  -      itag_mul,        AI_mul  ;
  -      itag_mul_ovf,    AI_mul_ovf;
  -      itag_mul_ovf_un, AI_mul_ovf_un;
  -      itag_rem,        AI_rem  ;
  -      itag_rem_un,     AI_rem_un ; 
  -      itag_shl,        AI_shl ; 
  -      itag_shr,        AI_shr ; 
  -      itag_shr_un,     AI_shr_un;
  -      itag_sub,        AI_sub  ;
  -      itag_sub_ovf,    AI_sub_ovf;
  -      itag_sub_ovf_un, AI_sub_ovf_un; 
  -      itag_xor,        AI_xor;  
  -      itag_or,         AI_or;     
  -      itag_neg,        AI_neg;     
  -      itag_not,        AI_not;     
  -      itag_ldnull,     AI_ldnull;   
  -      itag_ckfinite,   AI_ckfinite;
  -      itag_nop,        AI_nop;
  -      itag_localloc,   I_localloc;
  -      itag_throw,      I_throw;
  -      itag_ldlen,      I_ldlen;
  -      itag_rethrow,    I_rethrow;    
  -      itag_rethrow,    I_rethrow;   
  -      itag_initblk,    I_initblk (Aligned,Nonvolatile);   
  -      itag_cpblk,      I_cpblk (Aligned,Nonvolatile);  
  +    [ itag_add,        AI_add
  +      itag_add_ovf,    AI_add_ovf
  +      itag_add_ovf_un, AI_add_ovf_un
  +      itag_and,        AI_and  
  +      itag_div,        AI_div 
  +      itag_div_un,     AI_div_un
  +      itag_ceq,        AI_ceq  
  +      itag_cgt,        AI_cgt 
  +      itag_cgt_un,     AI_cgt_un
  +      itag_clt,        AI_clt
  +      itag_clt_un,     AI_clt_un
  +      itag_mul,        AI_mul  
  +      itag_mul_ovf,    AI_mul_ovf
  +      itag_mul_ovf_un, AI_mul_ovf_un
  +      itag_rem,        AI_rem  
  +      itag_rem_un,     AI_rem_un  
  +      itag_shl,        AI_shl  
  +      itag_shr,        AI_shr  
  +      itag_shr_un,     AI_shr_un
  +      itag_sub,        AI_sub  
  +      itag_sub_ovf,    AI_sub_ovf
  +      itag_sub_ovf_un, AI_sub_ovf_un 
  +      itag_xor,        AI_xor  
  +      itag_or,         AI_or     
  +      itag_neg,        AI_neg     
  +      itag_not,        AI_not     
  +      itag_ldnull,     AI_ldnull   
  +      itag_ckfinite,   AI_ckfinite
  +      itag_nop,        AI_nop
  +      itag_localloc,   I_localloc
  +      itag_throw,      I_throw
  +      itag_ldlen,      I_ldlen
  +      itag_rethrow,    I_rethrow    
  +      itag_rethrow,    I_rethrow   
  +      itag_initblk,    I_initblk (Aligned,Nonvolatile)   
  +      itag_cpblk,      I_cpblk (Aligned,Nonvolatile)  
       ]
   
   let encode_table = Dictionary<_,_>(300, HashIdentity.Structural)
  
positive.code: 
  [<NoEquality; NoComparison>]
  type WriterState = 
    { os: ByteBuffer; 
      oscope: CcuThunk;
      occus: Table<CcuReference>; 
      otycons: NodeOutTable<EntityData,Entity>; 
      otypars: NodeOutTable<TyparData,Typar>; 
      ovals: NodeOutTable<ValData,Val>;
      ostrings: Table<string>; 
      opubpaths: Table<int[]>; 
      onlerefs: Table<int * int[]>; 
      osimpletyps: Table<int>;
      oglobals : TcGlobals;
      ofile : string;
    }
  let pfailwith st str = ffailwith st.ofile str
      
  
negative.code:               p_byte 29 st
           else 
                p_byte 2 st
      | TOp.Recd (a,b)                 -> p_byte 3 st; p_tup2 p_recdInfo (p_tcref "recd op") (a,b) st
      | TOp.ValFieldSet (a)            -> p_byte 4 st; p_rfref a st
      | TOp.ValFieldGet (a)            -> p_byte 5 st; p_rfref a st
      | TOp.UnionCaseTagGet (a)        -> p_byte 6 st; p_tcref "cnstr op" a st
      | TOp.UnionCaseFieldGet (a,b)    -> p_byte 7 st; p_tup2 p_ucref p_int (a,b) st
      | TOp.UnionCaseFieldSet (a,b)    -> p_byte 8 st; p_tup2 p_ucref p_int (a,b) st
      | TOp.ExnFieldGet (a,b)          -> p_byte 9 st; p_tup2 (p_tcref "exn op") p_int (a,b) st
      | TOp.ExnFieldSet (a,b)          -> p_byte 10 st; p_tup2 (p_tcref "exn op")  p_int (a,b) st
      | TOp.TupleFieldGet (tupInfo,a)       -> 
           if evalTupInfoIsStruct tupInfo then 
                p_byte 30 st; p_int a st
           else 
                p_byte 11 st; p_int a st
      | TOp.ILAsm (a,b)                -> p_byte 12 st; p_tup2 (p_list p_ILInstr) p_typs (a,b) st
      | TOp.RefAddrGet                 -> p_byte 13 st
      | TOp.UnionCaseProof (a)         -> p_byte 14 st; p_ucref a st
      | TOp.Coerce                     -> p_byte 15 st
      | TOp.TraitCall (b)              -> p_byte 16 st; p_trait b st
      | TOp.LValueOp (a,b)             -> p_byte 17 st; p_tup2 p_lval_op_kind (p_vref "lval") (a,b) st
      | TOp.ILCall (a1,a2,a3,a4,a5,a7,a8,a9,b,c,d)          
                                       -> p_byte 18 st; p_tup11 p_bool p_bool p_bool p_bool p_vrefFlags p_bool p_bool p_ILMethodRef p_typs p_typs p_typs (a1,a2,a3,a4,a5,a7,a8,a9,b,c,d) st
      | TOp.Array                      -> p_byte 19 st
      | TOp.While _                    -> p_byte 20 st
      | TOp.For(_,dir)                 -> p_byte 21 st; p_int (match dir with FSharpForLoopUp -> 0 | CSharpForLoopUp -> 1 | FSharpForLoopDown -> 2) st
      | TOp.Bytes bytes                -> p_byte 22 st; p_bytes bytes st
      | TOp.TryCatch _                 -> p_byte 23 st
      | TOp.TryFinally _               -> p_byte 24 st
      | TOp.ValFieldGetAddr (a)        -> p_byte 25 st; p_rfref a st
      | TOp.UInt16s arr                -> p_byte 26 st; p_array p_uint16 arr st
      | TOp.Reraise                    -> p_byte 27 st
      | TOp.UnionCaseFieldGetAddr (a,b) -> p_byte 28 st; p_tup2 p_ucref p_int (a,b) st
         // Note tag byte 29 is taken for struct tuples, see above
         // Note tag byte 30 is taken for struct tuples, see above
      | TOp.Goto _ | TOp.Label _ | TOp.Return -> failwith "unexpected backend construct in pickled TAST"
  