Creates a new field from `name` and `descriptor`. For example::

            >>> from jawa.cf import ClassFile
            >>> cf = ClassFile.create('BeerCounter')
            >>> field = cf.fields.create('BeerCount', 'I')

        To automatically create a static field, pass a value::

            >>> from jawa.cf import ClassFile
            >>> cf = ClassFile.create('BeerCounter')
            >>> field = cf.fields.create(
            ...     'MaxBeer',
            ...     'I',
            ...     cf.constants.create_integer(99)
            ... )

        :param name: Name of the new field.
        :param descriptor: Type descriptor of the new field.
        :param value: Optional static value for the field.

def create(self, name: str, descriptor: str, value: Constant=None) -> Field:
        """
        Creates a new field from `name` and `descriptor`. For example::

            >>> from jawa.cf import ClassFile
            >>> cf = ClassFile.create('BeerCounter')
            >>> field = cf.fields.create('BeerCount', 'I')

        To automatically create a static field, pass a value::

            >>> from jawa.cf import ClassFile
            >>> cf = ClassFile.create('BeerCounter')
            >>> field = cf.fields.create(
            ...     'MaxBeer',
            ...     'I',
            ...     cf.constants.create_integer(99)
            ... )

        :param name: Name of the new field.
        :param descriptor: Type descriptor of the new field.
        :param value: Optional static value for the field.
        """
        field = Field(self._cf)
        name = self._cf.constants.create_utf8(name)
        descriptor = self._cf.constants.create_utf8(descriptor)
        field._name_index = name.index
        field._descriptor_index = descriptor.index
        field.access_flags.acc_public = True

        if value is not None:
            field.attributes.create(ConstantValueAttribute, value)
            field.access_flags.acc_static = True

        self.append(field)
        return field