anchor.diff:          interface IEventSource<'a> with
               member x.Subscribe cb = o.Subscribe(fun v -> cb v)
   
  +    type private Mod<'a>(o : IMod<'a>) =
  +        interface IEventSource with
  +            member x.Subscribe cb = o |> Mod.unsafeRegisterCallbackKeepDisposable (fun v -> cb (v :> obj))
  +
  +        interface IEventSource<'a> with
  +            member x.Subscribe cb = o  |> Mod.unsafeRegisterCallbackKeepDisposable (fun v -> cb v)
  +
  +
   
       let ofObservable (o : IObservable<'a>) =
           Obs<'a>(o) :> IEventSource<_>
   
  +    let ofMod (o : IMod<'a>) =
  +        Mod<'a>(o) :> IEventSource<_>
   
   type IPattern =
       abstract member Relevant : PersistentHashSet<IEventSource>
  -    abstract member Run : IEventSource * obj -> Option<obj>
  +    abstract member Run : IEventSource * obj-> Option<obj>
   
   [<AbstractClass>]
   type Pattern(relevant : PersistentHashSet<IEventSource>) =
  
positive.code:             }
          }
  
  
  type Pattern<'s, 'a> =
      | Not of SF<'s, 'a>
  
negative.code: and Result<'s, 'a> =
      | Finished of 'a
      | Continue of Pattern * (obj -> SF<'s, 'a>)
  
  
  module SF =
      let value (v : 'a) =
  