anchor.diff:                  let added       = newEvents |> Seq.filter (oldEvents.Contains >> not) |> Seq.toList
   
                   for a in added do
  -                    subscriptions.[a] <- a.Subscribe(fun o -> queue.Enqueue(a, o))
  +                    subscriptions.[a] <- a.Subscribe(fun o -> x.Push(a, o))
   
                   for r in removed do
                       match subscriptions.TryGetValue r with
  
positive.code:         member x.Bind(m : State<'s, 'a>, f : 'a -> SF<'s, 'b>) =
              SF.bind f { run = m |> EventState.lift |> State.map Finished }
  
          member x.Bind(m : State<EventState<'s>, 'a>, f : 'a -> SF<'s, 'b>) =
              SF.bind f { run = m |> State.map Finished }
  
  
          member x.Return(v : 'a) = 
              SF.value v
  
          member x.While(guard : unit -> Pattern<'s, 'a>, body : SF<'s, unit>) =
              match guard() with
                  | Not cancel -> SF.repeatUntil cancel body
  
          member x.Delay(f : unit -> SF<'s, 'a>) =
              { run =
  
negative.code:                 match ps with
                      | [] | [_] -> ()
                      | _ ->
                          use p = new Pen(color, 3.0f)
                          x.DrawLines(p, ps |> List.map (fun p -> Point(p.X, p.Y)) |> List.toArray)
  
              member x.Polygon(color : Color, ps : list<V2i>) =
                  match ps with
                      | [] | [_] -> ()
                      | _ ->            
                          use p = new HatchBrush(HatchStyle.DottedGrid, color)
                          x.FillPolygon(p, ps |> List.map (fun p -> Point(p.X, p.Y)) |> List.toArray)
  
          type PaintForm(m : IMod<SketchState>) as this =
  