def METHOD_NAME(arg_ctx, dest, model_type, arguments):
    '''
    Creates args that will be combined into an object by an arg validator.
    '''
    from knack.arguments import ignore_type
    from knack.introspection import option_descriptions
    def get_complex_argument_processor(expanded_arguments, assigned_arg, model_type):
        '''
        Return a validator which will aggregate multiple arguments to one complex argument.
        '''
        def _expansion_validator_impl(namespace):
            '''
            The validator create a argument of a given type from a specific set of arguments from CLI
            command.
            :param namespace: The argparse namespace represents the CLI arguments.
            :return: The argument of specific type.
            '''
            ns = vars(namespace)
            kwargs = dict((k, ns[k]) for k in ns if k in set(expanded_arguments))
            setattr(namespace, assigned_arg, model_type(**kwargs))
        return _expansion_validator_impl
    # Fetch the documentation for model parameters first. for models, which are the classes
    # derive from msrest.serialization.Model and used in the SDK API to carry parameters, the
    # document of their properties are attached to the classes instead of constructors.
    parameter_docs = option_descriptions(model_type)
    for name in arguments:
        # Get the validation map from the model type in order to determine
        # whether the argument should be required
        validation = model_type._validation.get(name, None)  # pylint: disable=protected-access
        required = validation.get('required', False) if validation else False
        # Generate the command line argument name from the property name
        options_list = ['--' + name.replace('_', '-')]
        # Get the help text from the model type
        help_text = parameter_docs.get(name, None)
        # Create the additional command line argument
        arg_ctx.extra(
            name,
            required=required,
            options_list=options_list,
            help=help_text)
    # Rename the original command line argument and ignore it (i.e. make invisible)
    # so that it does not show up on command line and does not conflict with any other
    # arguments.
    dest_option = ['--__{}'.format(dest.upper())]
    arg_ctx.argument(dest,
                     arg_type=ignore_type,
                     options_list=dest_option,
                     # The argument is hidden from the command line, but its value
                     # will be populated by this validator.
                     validator=get_complex_argument_processor(arguments, dest, model_type))