anchor.diff:                  //|> Array.map SharedRow
   
   
  -        let mkILGenericClass (nsp, nm, access, genparams, extends, impl, methods, fields, nestedTypes, props, events, attrs, init) : ILTypeDef =
  -          { Kind=ILTypeDefKind.Class;
  -            Namespace=nsp;
  -            Name=nm;
  -            GenericParams= genparams;
  -            Access = access;
  -            Implements = impl
  +        let mkILSimpleClass (ilg: ILGlobals) (nsp, nm, access, methods, fields, nestedTypes, props, events, attrs, init) =
  +          { Kind=ILTypeDefKind.Class
  +            Namespace=nsp
  +            Name=nm
  +            GenericParams=  [| |]
  +            Access = access
  +            Implements = [| |]
               Attributes = TypeAttributes.Class
  -            Layout=ILTypeDefLayout.Auto;
  -            Encoding=ILDefaultPInvokeEncoding.Ansi;
  -            InitSemantics=init;
  -            Extends = Some extends;
  -            Methods= methods; 
  -            Fields= fields;
  -            NestedTypes=nestedTypes;
  -            CustomAttrs=attrs;
  -            MethodImpls=emptyILMethodImpls;
  -            Properties=props;
  -            Events=events;
  +            Layout=ILTypeDefLayout.Auto
  +            Encoding=ILDefaultPInvokeEncoding.Ansi
  +            InitSemantics=init
  +            Extends = Some ilg.typ_Object
  +            Methods= methods
  +            Fields= fields
  +            NestedTypes=nestedTypes
  +            CustomAttrs=attrs
  +            MethodImpls=emptyILMethodImpls
  +            Properties=props
  +            Events=events
               Token=0
               //SecurityDecls=emptyILSecurityDecls; 
               //HasSecurity=false;
           } 
  -        let mkILSimpleClass (ilg: ILGlobals) (nsp, nm, access, methods, fields, nestedTypes, props, events, attrs, init) =
  -          mkILGenericClass (nsp, nm,access, [| |], ilg.typ_Object, [| |], methods, fields, nestedTypes, props, events, attrs, init)
  -        let mkILTypeDefForGlobalFunctions ilg (methods,fields) = mkILSimpleClass ilg (UNone, typeNameForGlobalFunctions, ILTypeDefAccess.Public, methods, fields, emptyILTypeDefs, emptyILProperties, emptyILEvents, emptyILCustomAttrs, ILTypeInit.BeforeField)
  +        let mkILTypeDefForGlobalFunctions ilg (methods,fields) = 
  +            mkILSimpleClass ilg (UNone, typeNameForGlobalFunctions, ILTypeDefAccess.Public, methods, fields, emptyILTypeDefs, emptyILProperties, emptyILEvents, emptyILCustomAttrs, ILTypeInit.BeforeField)
   
           let destTypeDefsWithGlobalFunctionsFirst ilg (tdefs: ILTypeDefs) = 
             let l = tdefs.Entries
  
positive.code:             GetBytesAsBlobIdx cenv (GetMethodDefSigAsBytes cenv env mdef)
  
          let GenMethodDefAsRow cenv env midx (md: ILMethodDef) = 
              let flags = 
                  GetMemberAccessFlags md.Access |||
                  (if md.IsClassInitializer || md.IsStatic then 0x0010 else 0x0) |||
                  (if md.IsFinal then 0x0020 else 0x0) |||
                  (if md.IsVirtual then 0x0040 else 0x0) |||
                  (if md.IsHideBySig then 0x0080 else 0x0) |||
                  (if md.IsCheckAccessOnOverride then 0x0200 else 0x0) |||
                  (if md.IsNewSlot then 0x0100 else 0x0) |||
                  (if md.IsAbstract then 0x0400 else 0x0) |||
                  (if md.IsSpecialName then 0x0800 else 0x0) |||
  #if EMIT_PINVOKE
                  (if (match md.Body.Contents with MethodBody.PInvoke _ -> true | _ -> false) then 0x2000 else 0x0) |||
                  (if md.IsUnmanagedExport then 0x0008 else 0x0) |||
                  (if md.IsReqSecObj then 0x8000 else 0x0) |||
                  (if md.HasSecurity || not md.SecurityDecls.Entries.IsEmpty then 0x4000 else 0x0) |||
  #endif
                  (if md.IsRTSpecialName then 0x1000 else 0x0) ||| // RTSpecialName 
                  0x0000
  
             
              let implflags = 
  #if EMIT_PINVOKE
                  (match  md.mdCodeKind with 
                   | MethodCodeKind.Native -> 0x0001
                   | MethodCodeKind.Runtime -> 0x0003
                   | MethodCodeKind.IL  -> 0x0000) |||
  #endif
                  (if md.IsInternalCall then 0x1000 else 0x0000) |||
                  (if md.IsManaged then 0x0000 else 0x0004) |||
                  (if md.IsForwardRef then 0x0010 else 0x0000) |||
                  (if md.IsPreserveSig then 0x0080 else 0x0000) |||
                  (if md.IsSynchronized then 0x0020 else 0x0000) |||
                  (if md.IsMustRun then 0x0040 else 0x0000) |||
                  (if (md.IsNoInline || (match md.Body with Some il -> il.NoInlining | _ -> false)) then 0x0008 else 0x0000) |||
                  (if ((* md.IsAggressiveInline || *) (match md.Body with Some il -> il.AggressiveInlining | _ -> false)) then 0x0100 else 0x0000) |||
                  0x0000
  
              if md.IsEntryPoint then 
                  if cenv.entrypoint <> None then failwith "duplicate entrypoint"
  
negative.code:                     if found then roots 
                      else 
                          // Find the ones that 'x' encompasses and collapse them
                          let yes, others = roots |> Array.partition (fun (r, _) -> contains r x)
                          (x, yes |> Array.collect (fun (r, ch) -> r :: ch)) :: others
              
                  ([], vs) ||> Array.fold addToRoot
  
              let rec makeSEHTree cenv env (pc2pos: int[]) (lab2pc : Dictionary<ILCodeLabel, int>) (exs : ILExceptionSpec[]) = 
  
                  let clause_inside_lrange cl lr =
                    List.forall (fun lr1 -> labelRangeInsideLabelRange lab2pc lr1 lr) (lranges_of_clause cl) 
  