protected void Unmonitor(DirtifiableObject dirtifiable)
        {
            var sub = _monitored[dirtifiable];

            sub.Dispose();
            _monitored.Remove(dirtifiable);
        }
        protected void Monitor(DirtifiableObject dirtifiable)
        {
            var sub = dirtifiable.Dirtied.Subscribe(_ => MarkDirty());

            _monitored.Add(dirtifiable, sub);
        }