final public function addPropertyChangedNotificationHandler($propertyNames, $callback)
    {
        if (!is_array($propertyNames)) {
            $propertyNames = [$propertyNames];
        }

        foreach ($propertyNames as $propertyName) {
            $this->propertyChangedCallbacks[$propertyName][] = $callback;
        }
    }