code: def requirement(self) -> FetchRequirement:
          
          key_name = self.key
          if key_name == b'ALL':
              return FetchRequirement.NONE
          elif key_name == b'KEYSET':
              keyset_reqs = {key.requirement for key in self.filter_key_set}
              return FetchRequirement.reduce(keyset_reqs)
          elif key_name == b'OR':
              left, right = self.filter_key_or
              key_or_reqs = {left.requirement, right.requirement}
              return FetchRequirement.reduce(key_or_reqs)
          elif key_name in (b'SENTBEFORE', b'SENTON', b'SENTSINCE', b'BCC',
                            b'CC', b'FROM', b'SUBJECT', b'TO', b'HEADER'):
              return FetchRequirement.HEADERS
          elif key_name in (b'BODY', b'TEXT', b'LARGER', b'SMALLER'):
              return FetchRequirement.BODY
          else:
              return FetchRequirement.METADATA
docs: Indicates the data required to fulfill this search key.