class HelpCommand implements AdminCommand {

    @Override
    public void execute( String... args ) throws IncorrectUsage
    {
        if ( args.length > 0 )
        {
            try
            {
                AdminCommand.Provider commandProvider = this.locator.findProvider( args[0] );
                usage.printUsageForCommand( commandProvider, output );
            }
            catch ( NoSuchElementException e )
            {
                StringBuilder validCommands = new StringBuilder();
                locator.getAllProviders()
                        .forEach( commandProvider -> validCommands.append( commandProvider.name() ).append( " " ) );

                throw new IncorrectUsage(
                        format( "Unknown command: %s. Available commands are: %s\n", args[0], validCommands ) );
            }
        }
        else
        {
            usage.print( output );
        }
    }

      HelpCommand( Usage usage, Consumer<String> output, CommandLocator locator );

}