anchor.diff:              m |> Obs.valuesOf |> Obs.collect f
   
   
  +        member x.Bind(m : IMod<'a>, f : 'a -> IObservable<'b>) =
  +            m |> Obs.bind f
  +
           member x.While(guard : unit -> bool, body : unit -> IObservable<'a>) =
               if guard() then
                   Obs.append (body()) (Observable.Defer (fun () -> x.While(guard, body)))
  
positive.code:             { new IDisposable with member x.Dispose() = modSub.Value.Dispose(); innerSub.Value.Dispose() }
          )
  
  
      // ground combinators
      let append (l : IObservable<'a>) (r : IObservable<'a>) =
  
negative.code:     let all (values : IObservable<'a>) : aset<'a> =
          values.Select Add |> toASet
  
      
      
  
      // higher order combinators
      let map (f : 'a -> 'b) (o : IObservable<'a>) =
  