@protected T? get value { notifyChildrens(); return _value; }
@protected set value(T? newValue) { if (_value == newValue) return; _value = newValue; refresh(); }