'Flatten a complex parameter object into command line arguments.
:param str path: The complex parameter namespace.
:param class param_model: The complex parameter class.
:param list conflict_name: List of argument names that conflict.'

def _flatten_object(self, path, param_model, conflict_names=None):

    conflict_names = (conflict_names or [])
    if self._should_flatten(path):
        validations = param_model._validation.items()
        required_attrs = [key for (key, val) in validations if val.get('required')]
        for (param_attr, details) in self._get_attrs(param_model, path):
            if (param_attr in IGNORE_PARAMETERS):
                continue
            options = {}
            options['options_list'] = [arg_name(param_attr)]
            options['required'] = False
            options['arg_group'] = group_title(path)
            options['help'] = find_param_help(param_model, param_attr)
            options['validator'] = (lambda ns: validators.validate_required_parameter(ns, self.parser))
            options['default'] = None
            if (details['type'] in BASIC_TYPES):
                self._resolve_conflict(param_attr, param_attr, path, options, details['type'], required_attrs, conflict_names)
            elif details['type'].startswith('['):
                inner_type = details['type'][1:(-1)]
                if (inner_type in BASIC_TYPES):
                    options['help'] += '    Space    separated    values.'
                    self._resolve_conflict(param_attr, param_attr, path, options, details['type'], required_attrs, conflict_names)
                else:
                    inner_type = operations_name(inner_type)
                    try:
                        validator = getattr(validators, (inner_type + '_format'))
                        options['help'] += ('    ' + validator.__doc__)
                        options['type'] = validator
                        self._resolve_conflict(param_attr, param_attr, path, options, details['type'], required_attrs, conflict_names)
                    except AttributeError:
                        continue
            else:
                attr_model = _load_model(details['type'])
                if (not hasattr(attr_model, '_attribute_map')):
                    values_index = options['help'].find('    Possible    values    include')
                    if (values_index >= 0):
                        choices = options['help'][(values_index + 25):].split(',    ')
                        options['choices'] = [enum_value(c) for c in choices if (enum_value(c) != 'unmapped')]
                        options['help'] = options['help'][0:values_index]
                    self._resolve_conflict(param_attr, param_attr, path, options, details['type'], required_attrs, conflict_names)
                else:
                    self._flatten_object('.'.join([path, param_attr]), attr_model)
