anchor.diff:      let tagReader = FSharpValue.PreComputeUnionTagReader(typeof<'Union>, AllMembers)
   #endif
   
  -    let caseNames = ucis |> Array.map (fun u -> u.CaseInfo.Name)
  +    let caseNames = lazy(ucis.Value |> Array.map (fun u -> u.CaseInfo.Name))
   
       member _.IsStructUnion = typeof<'Union>.IsValueType
   
       /// Case shapes for given union type
  -    member _.UnionCases = ucis
  +    member _.UnionCases = ucis.Value
       /// Gets the underlying tag id for given union instance
       [<MethodImpl(MethodImplOptions.AggressiveInlining)>]
       member _.GetTag (union : 'Union) : int =
  
positive.code: 
      /// Looks the underlying tag id for given union case name using linear search.
      member _.GetTag (caseName : string) : int =
          let caseNames = caseNames
          let n = caseNames.Length
          let mutable i = 0
          let mutable notFound = true
  
negative.code:         mkWriteMemberUntyped<'Record> prop.Name prop [|backingField :> MemberInfo|]
  
  #if TYPESHAPE_EMIT
      let ctorf = if typeof<'Record>.IsValueType then null else emitUninitializedCtor<'Record> ctorInfo
  #else
      let ctorParams = props |> Array.map (fun p -> defaultOfUntyped p.PropertyType)
  #endif
  
      let recordFields = lazy (Array.map mkRecordField props)
  
      /// True if an F# struct record
      member _.IsStructRecord = typeof<'Record>.IsValueType
  