code: def parse_default_arguments(self, default_args_sample):
      
      parsed_arguments_dict = {}
      default_arguments = list(self._arguments.default_arguments.values())
      expected_length = len(default_arguments)
      real_length = len(default_args_sample)
  
      default_args_count = len([item for item in default_arguments if item.default is not None])
  
      if not self._arguments.has_optional_default_argument and (default_args_sample is None or expected_length != real_length):
        raise ArgumentException("Command require {} positional argument(s), found {}".format(
          expected_length,
          real_length
        ))
      elif self._arguments.has_optional_default_argument and default_args_sample is not None and real_length < expected_length - default_args_count:
        raise ArgumentException("Command require {} or {} positional argument(s), found {}".format(
          expected_length,
          expected_length - default_args_count,
          real_length
        ))
  
      for index in range(0, expected_length):
        arg_meta = default_arguments[index]
        """:type arg_meta ModuleArgumentItem"""
        try:
          arg = default_args_sample[index]
        except IndexError:
          arg = arg_meta.default
  
        try:
          if arg_meta.value_type is not None:
            arg = self.__convert_value_to_type(arg, arg_meta.value_type)
  
          parsed_arguments_dict[arg_meta.name] = arg
        except (TypeError, ValueError):
          raise ArgumentException("Invalid argument type - expected {}, got {}".format(arg_meta.value_type.__name__, type(arg).__name__))
  
      return parsed_arguments_dict
docs: :type default_args_sample list
      :rtype dict