def __parameter_descriptor(self, subfield_list):
descriptor = {}<EOL>final_subfield = subfield_list[-<NUM_LIT:1>]<EOL>if all(subfield.required for subfield in subfield_list):<EOL><INDENT>descriptor['<STR_LIT>'] = True<EOL><DEDENT>descriptor['<STR_LIT:type>'] = self.__field_to_parameter_type(final_subfield)<EOL>default = self.__parameter_default(final_subfield)<EOL>if default is not None:<EOL><INDENT>descriptor['<STR_LIT:default>'] = default<EOL><DEDENT>if any(subfield.repeated for subfield in subfield_list):<EOL><INDENT>descriptor['<STR_LIT>'] = True<EOL><DEDENT>enum_descriptor = self.__parameter_enum(final_subfield)<EOL>if enum_descriptor is not None:<EOL><INDENT>descriptor['<STR_LIT>'] = enum_descriptor<EOL><DEDENT>return descriptor<EOL>
Creates descriptor for a parameter using the subfields that define it.

        Each parameter is defined by a list of fields, with all but the last being
        a message field and the final being a simple (non-message) field.

        Many of the fields in the descriptor are determined solely by the simple
        field at the end, though some (such as repeated and required) take the whole
        chain of fields into consideration.

        Args:
          subfield_list: List of fields describing the parameter.

        Returns:
          Dictionary containing a descriptor for the parameter described by the list
              of fields.