This makes command validation happen as part of `verifyThenRunCommand()`, using a newly introduced protected method (`validateCommand()`) rather than a `commandValidator` property (that subclasses were responsible for manually invoking).