public virtual void Update() { solver = solver ?? new Solver <T>(); if (policies.Block(status) || IsActing()) { return; } var s = status; var next = (solver.status != S.Running) ? StartSolving() : solver.Iterate(config.frameBudget); if (next != null) { handler.Effect(next.Head(), this); } policies.OnResult(status, ObjectName(this)); if (s != status) { NotifyPropertyChanged(nameof(status)); } }