this is an adjustment of #10188 fixing #7405
isActive() should not be affected in any way by specifying "optional" property.
isActive() should be determined from only and except.
If it is active it can then be checked if optional or not.
Currently this changes the behavior that except will always have precedence.