anchor.diff:              | Choice1Of2 (tcref,extMemInfo) -> tab1.Add (tcref, extMemInfo), tab2
               | Choice2Of2 extMemInfo -> tab1, extMemInfo :: tab2)  
   
  +    let isILOrRequiredQualifiedAccess = isIL || (not ownDefinition && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute tcref.Attribs)
       let eFieldLabels = 
  -        if not tcref.IsRecordTycon || isIL || flds.Length = 0 || (not ownDefinition && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute tcref.Attribs) then 
  +        if isILOrRequiredQualifiedAccess || not tcref.IsRecordTycon || flds.Length = 0 then 
               nenv.eFieldLabels 
           else 
               (nenv.eFieldLabels,flds) ||> Array.fold (fun acc f -> 
  
positive.code:             if mayHaveConstruction then 
                  tab.LinearTryModifyThenLaterFlatten (tcref.DisplayName, (fun prev ->
                      match prev with 
                      | Some (Item.UnqualifiedType tcrefs) ->  Item.UnqualifiedType (tcref::tcrefs)
                      | _ ->  Item.UnqualifiedType [tcref]))
              else
                  tab
          if isIL || ucrefs.Length = 0  || (not ownDefinition && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute tcref.Attribs) then 
              tab 
          else 
              AddUnionCases2 bulkAddMode tab ucrefs
      let ePatItems = 
          if isIL || ucrefs.Length = 0  || (not ownDefinition && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute tcref.Attribs) then 
            nenv.ePatItems 
          else 
            AddUnionCases1 nenv.ePatItems ucrefs
      { nenv with 
          eFieldLabels= eFieldLabels
          eUnqualifiedItems = eUnqualifiedItems
          ePatItems = ePatItems
          eIndexedExtensionMembers = eIndexedExtensionMembers 
  
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.
  