anchor.diff:      member this.CopyTo(array:KeyValuePair<'TKey, 'TValue>[], arrayIndex:int) =
           this.AsList(fun node -> new KeyValuePair<'TKey, 'TValue>(node.Key, node.Value)).CopyTo(array, arrayIndex)
   
  -    member this.GetEnumerator() : IEnumerator<KeyValuePair<'TKey, 'TValue>> =
  -        let backingList = this.AsList<KeyValuePair<'TKey, 'Value>>(fun node -> new KeyValuePair<'TKey, 'TValue>(node.Key, node.Value));
  -        let tiedList = new TiedList<KeyValuePair<'TKey, 'Value>, 'TKey, 'TValue>(this, this.version, backingList)
  -        tiedList.GetEnumerator()
  -
       member private this.AsList<'TEnumerator>(selector:SplayTreeNode<'TKey, 'TValue>->'TEnumerator) : IList<'TEnumerator> =
           let result = new List<'TEnumerator>(this.count)
           if this.root <> null then
  
positive.code: 
      [<DefaultValue>]
      val mutable version:int
  
      member this.Add(key:'TKey, value:'TValue) =
          this.Set(key, value, true)
  
negative.code:     let version = version
      let backingList:IList<'T> = backingList
  
      interface IEnumerable with
          member this.GetEnumerator() = this.GetEnumerator() :> IEnumerator
  
      interface ICollection<'T> with
          member this.Add(item:'T) = this.Add(item)
          member this.Clear() = this.Clear()
          member this.Contains(item) = this.Contains(item)
          member this.CopyTo(array, arrayIndex) = this.CopyTo(array, arrayIndex)
          member this.Remove(item:'T) = this.Remove(item)
          member this.GetEnumerator() = this.GetEnumerator()
          member this.Count
              with get() = this.Count
          member this.IsReadOnly
              with get() = this.IsReadOnly
  
      member private this.CheckVersion() =
          if version <> tree.version then
              raise (new InvalidOperationException("The collection has been modified."))
  