This exception will be thrown if a command is used illegally. There are several ways for this to
happen.

Basically, a command becomes "locked" after it is first started or added to a command group.

This exception should be thrown if (after a command has been locked) its requirements change,
it is put into multiple command groups, it is started from outside its command group, or it adds
a new child.