+ * For this to work, there must be a {@link CommandManager}
+ * attached to the command builder. To guarantee this, it is recommended to get the command builder instance
+ * using {@link CommandManager#commandBuilder(String, String...)}
+ *
+ * @param name Name of the argument
+ * @param names Pair containing the names of the sub-arguments
+ * @param parserPair Pair containing the types of the sub-arguments. There must be parsers for these types registered
+ * in the {@link com.intellectualsites.commands.arguments.parser.ParserRegistry} used by the
+ * {@link CommandManager} attached to this command
+ * @param description Description of the argument
+ * @param First type
+ * @param
+ * For this to work, there must be a {@link CommandManager}
+ * attached to the command builder. To guarantee this, it is recommended to get the command builder instance
+ * using {@link CommandManager#commandBuilder(String, String...)}
+ *
+ * @param name Name of the argument
+ * @param outputType The output type
+ * @param names Pair containing the names of the sub-arguments
+ * @param parserPair Pair containing the types of the sub-arguments. There must be parsers for these types registered
+ * in the {@link com.intellectualsites.commands.arguments.parser.ParserRegistry} used by the
+ * {@link CommandManager} attached to this command
+ * @param mapper Mapper that maps from {@link Pair} to the custom type
+ * @param description Description of the argument
+ * @param First type
+ * @param
+ * For this to work, there must be a {@link CommandManager}
+ * attached to the command builder. To guarantee this, it is recommended to get the command builder instance
+ * using {@link CommandManager#commandBuilder(String, String...)}
+ *
+ * @param name Name of the argument
+ * @param names Triplet containing the names of the sub-arguments
+ * @param parserTriplet Triplet containing the types of the sub-arguments. There must be parsers for these types
+ * registered in the {@link com.intellectualsites.commands.arguments.parser.ParserRegistry}
+ * used by the {@link CommandManager} attached to this command
+ * @param description Description of the argument
+ * @param First type
+ * @param
+ * For this to work, there must be a {@link CommandManager}
+ * attached to the command builder. To guarantee this, it is recommended to get the command builder instance
+ * using {@link CommandManager#commandBuilder(String, String...)}
+ *
+ * @param name Name of the argument
+ * @param outputType The output type
+ * @param names Triplet containing the names of the sub-arguments
+ * @param parserTriplet Triplet containing the types of the sub-arguments. There must be parsers for these types
+ * registered in the {@link com.intellectualsites.commands.arguments.parser.ParserRegistry} used by
+ * the {@link CommandManager} attached to this command
+ * @param mapper Mapper that maps from {@link Triplet} to the custom type
+ * @param description Description of the argument
+ * @param First type
+ * @param