Iterates over the fields table, yielding each matching method. Calling
        without any arguments is equivalent to iterating over the table.

        :param name: The name of the field(s) to find.
        :param type_: The field descriptor (Ex: 'I')
        :param f: Any callable which takes one argument (the field).

def find(self, *, name: str=None, type_: str=None,
             f: Callable=None) -> Iterator[Field]:
        """
        Iterates over the fields table, yielding each matching method. Calling
        without any arguments is equivalent to iterating over the table.

        :param name: The name of the field(s) to find.
        :param type_: The field descriptor (Ex: 'I')
        :param f: Any callable which takes one argument (the field).
        """
        for field in self._table:
            if name is not None and field.name.value != name:
                continue

            descriptor = field.descriptor.value
            if type_ is not None and type_ != descriptor:
                continue

            if f is not None and not f(field):
                continue

            yield field