anchor.diff:      inherit IShapeTuple
       abstract Accept : ITuple3Visitor<'R> -> 'R
   
  -type ShapeTuple<'T1, 'T2, 'T3> () =
  +type private ShapeTuple<'T1, 'T2, 'T3> () =
       inherit TypeShape<'T1 * 'T2 * 'T3> ()
       interface IShapeTuple3 with
           member __.Accept v = v.Visit<'T1, 'T2, 'T3> ()
  
positive.code:     abstract Visit<'K, 'V when 'K : equality> : unit -> 'R
  
  type IShapeDictionary =
      inherit IShapeCollection
      abstract Accept : IDictionaryVisitor<'R> -> 'R
  
  type ShapeDictionary<'K, 'V when 'K : equality> () =
      inherit TypeShape<Dictionary<'K, 'V>> ()
      interface IShapeEnumerable with
          member __.Accept v = v.Visit<KeyValuePair<'K, 'V>> ()
  
negative.code:         member __.Accept v = v.Visit<'T> ()
      interface IShapeCollection with
          member __.Accept v = v.Visit<'T> ()
      interface IShapeFSharpUnion<'T list, unit, 'T * 'T list> with
          member __.GetTag a = match a with [] -> 0 | _ -> 1
          member __.GetTagUntyped o = match o :?> 'T list with [] -> 0 | _ -> 1
          member __.IsFSharpChoice = false
          member __.IsFSharpList = true
          member __.IsFSharpOption = false
          member __.UnionCaseInfo = ucis
          member __.Project ts = match ts with [] -> Choice1Of2() | t :: tl -> Choice2Of2(t,tl)
          member __.Construct1 (()) = []
          member __.Construct2 ((t, tl)) = t :: tl
          member self.Accept v = v.Visit<'T list, unit, 'T * 'T list> self
  
  ////////////////////////////////////////////
  ///////////// Section: TypeShape resolution
  