anchor.diff:      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."))
  
positive.code:     member this.Clear() =
          raise (new NotSupportedException())
  
      member this.Contains item =
          this.CheckVersion()
          backingList.Contains(item)
  
      member this.CopyTo array arrayIndex =
          this.CheckVersion()
          backingList.CopyTo(array, arrayIndex)
  
  
negative.code:         list.Add(selector(node))
          if node.Right <> null then this.PopulateList(node.Right, list, selector)
  
      member this.GetEnumerator() : IEnumerator<KeyValuePair<'TKey, 'TValue>> =
          let backingList = this.AsList(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 this.Keys
          with get() : ICollection<'TKey> = new TiedList<'TKey, 'TKey, 'TValue>(this, this.version, this.AsList(fun node -> node.Key)) :> ICollection<'TKey>
  
      member this.Values
          with get() : ICollection<'TValue> = new TiedList<'TValue, 'TKey, 'TValue>(this, this.version, this.AsList(fun node -> node.Value)) :> ICollection<'TValue>
  