static Command parse(String s) {
        @Cleanup
        Scanner scanner = new Scanner(s);
        String component = scanner.findInLine(SCANNER_PATTERN);
        String command = scanner.findInLine(SCANNER_PATTERN);
        ArrayList<String> args = new ArrayList<>();
        String arg;
        while ((arg = scanner.findInLine(SCANNER_PATTERN)) != null) {
            args.add(arg);
        }

        return new Command(component, command, Collections.unmodifiableList(args));
    }
static Command parse ( String s ) { @ Cleanup Scanner scanner = new Scanner ( s ) ; String component = scanner . findInLine ( SCANNER_PATTERN ) ; String command = scanner . findInLine ( SCANNER_PATTERN ) ; ArrayList < String > args = new ArrayList < > ( ) ; String arg ; while ( ( arg = scanner . findInLine ( SCANNER_PATTERN ) ) != null ) { args . add ( arg ) ; } return new Command ( component , command , Collections . unmodifiableList ( args ) ) ; }
Parses the given String into a Command, separating elements by spaces, and treating characters between double quotes(")
as a single element. The first element is the Command Component, the second is the Command Name and the rest will
be gathered as an ordered list of arguments.

@param s The string to parse.
@return A new instance of the Command class.