anchor.diff:          eUnqualifiedItems.Add (vref.LogicalName, Item.Value vref)  
   
   /// Add an F# value to the table of available extension members, if necessary, as an FSharp-style extension member
  -let AddValRefToExtensionMembers pri (eIndexedExtensionMembers: TyconRefMultiMap<_>)  (vref:ValRef) =
  +let AddValRefToExtensionMembers pri (eIndexedExtensionMembers: TyconRefMultiMap<_>) (vref:ValRef) =
       if vref.IsMember && vref.IsExtensionMember then
           eIndexedExtensionMembers.Add (vref.MemberApparentParent, FSExtMem (vref,pri)) 
       else
  
positive.code:             | Choice1Of2 (tcref,extMemInfo) -> tab1.Add (tcref, extMemInfo), tab2
              | Choice2Of2 extMemInfo -> tab1, extMemInfo :: tab2)  
  
      let eFieldLabels = 
          if not tcref.IsRecordTycon || isIL || flds.Length = 0 || (not ownDefinition && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute tcref.Attribs) then 
              nenv.eFieldLabels 
          else 
              (nenv.eFieldLabels,flds) ||> Array.fold (fun acc f -> 
  
negative.code:         let tab = nenv.eUnqualifiedItems
          // add the type name for potential use as a constructor
          // The rules are
          // - The unqualified lookup table in the environment can contain map names to a set of type names (the set of type names is a new kind of "item"). 
          // - When the contents of a type definition is added to the environment, an entry is added in this table for all class and struct types.
          // - When opening a module, types are added first to the environment, then values, then auto-opened sub-modules. 
          // - When a value is added by an "open" previously available type names will become inaccessible by this table. 
          let tab = 
              // This may explore into an unreferenced assembly if the name
              // is a type abbreviation. If it does, assume the name does not
              // have a constructor.
  