anchor.diff:  
   let toRecord fields = InferedType.Record (None, fields, false)
   
  -let toCollection typ mult =
  -    let tag = typeTag typ
  -    InferedType.Collection([ tag ], Map.ofList [ tag, (mult, typ) ])
  +let toCollection typs =
  +    let tags = typs |> List.map (snd >> typeTag)
  +    InferedType.Collection (tags, List.zip tags typs |> Map.ofList)
   
   /// A collection containing just one type
  -let SimpleCollection typ = toCollection typ InferedMultiplicity.Multiple
  +let SimpleCollection typ =
  +    [ (InferedMultiplicity.Multiple, typ) ]
  +    |> toCollection
   
   let primitiveProperty<'T> name optional =
       { Name = name
  
positive.code:         |> Map.ofList
  
      let expected =
          [ { Name = "field"; Type = InferedType.Heterogeneous cases }]
          |> toRecord
          |> SimpleCollection
  
  
negative.code: 
  let collectionProperty<'T> name mult =
      let prop = primitiveProperty<'T> name false
      { prop with Type = [ (mult, prop.Type) ] |> toCollection }
  
  let bsonValue<'T> =
      let typ = typeof<'T>
  