I wonder if the code would be any simpler if instead of inheritance the command reflection was separated into a Task that both this shell and the CommandListShell could use.