Time and date fields don't publish their values to the view model when their `setValue` method is called so within the app I'm working on I've instituted an override that changes this behavior that looks like this:

Ext.define('myapplication.override.form.field.Time', {
    override: 'Ext.form.field.Time',

    setValue: function () {
        this.publishState('value', this.getValue())
However the timefield's `publishState` method is marked as protected in the docs. Is using a protected method in a context like this what it was designed for or does this go against best practices?

Also FWIW I have come across the `valuePublishEvent` config. `setValue` does fire a change event so if I add `change` to that config the value will be published when that method is called, but there are other change events triggered within the app on which I don't want the value to be published. Also I'm just looking to get more clarity on when protected and private methods should be used (if at all) when developing an app with Ext.