anchor.diff:  let p_byte b st = st.os.EmitIntAsByte b
   let p_bool b st = p_byte (if b then 1 else 0) st
   let prim_p_int32 i st = 
  -    p_byte (b0 i) st;
  -    p_byte (b1 i) st;
  -    p_byte (b2 i) st;
  +    p_byte (b0 i) st
  +    p_byte (b1 i) st
  +    p_byte (b2 i) st
       p_byte (b3 i) st
   
   /// Compress integers according to the same scheme used by CLR metadata 
  
positive.code: let p_osgn_decl (outMap : NodeOutTable<_,_>) p x st = 
      let stamp = outMap.NodeStamp x
      let idx = outMap.Table.FindOrAdd stamp
      //dprintf "decl %d#%d in table %s has name %s\n" idx (outMap.NodeStamp x) outMap.Name (outMap.NodeName x);
      p_tup2 p_int p (idx,outMap.Deref x) st
  
  let u_osgn_ref (inMap: NodeInTable<_,_>) st = 
      let n = u_int st
      if n < 0 || n >= inMap.Count then ufailwith st ("u_osgn_ref: out of range, table = "+inMap.Name+", n = "+string n); 
      inMap.Get n
  
  let u_osgn_decl (inMap: NodeInTable<_,_>) u st = 
      let idx,data = u_tup2 u_int u st
      //   dprintf "unpickling osgn %d in table %s\n" idx nm; 
      let res = inMap.Get idx
      inMap.LinkNode res data;
      res
  
  //---------------------------------------------------------------------------
  
negative.code:       (p_array p_encoded_nleref) 
        (p_array p_encoded_simpletyp) 
        p_bytes 
        phase2data st2
      st2.os.Close()
    phase2bytes
    
  