а как вернуть объект из метода, принадлежащему этому объекту
type Check (target, f) =
static member (+) (c1, c2) =
c1,c2
member this.id = counter.next
member this.target : Targets = target
member this.f (target : obj) : obj -> Result = f
member this.propagate (target) =
let res = f target
res.check <- this //error
res