code: def scan(cls, result_key, func):
          
  
          if result_key in cls.scanner_keys:
              raise ValueError("'%s' is already a registered scanner key" % result_key)
  
          def scanner(self):
              result = func(self)
              setattr(self, result_key, result)
  
          cls.scanners.append(scanner)
          cls.scanner_keys.add(result_key)
docs: Define computed fields based on a string to "grep for".  This is
          preferred to utilizing raw log lines in plugins because computed fields
          will be serialized, whereas raw log lines will not.