state have different capabilities. Not all states use all fields, e.g. m_providerDevInput / m_providerDsm / m_providerGroup. Uses of the class have to check the eStateType to know which functions/fields are usable, this could be replaced by dynamic_cast. Another problem is the naming of the state class and the enum class containing values not both can be name State, I suggest to rename the latter to StateValue::{active, inactive, invalid} #16650