code: def set_extractor_processor_inputs(self, extractor_processors,
                                         sub_output=None):
          
          if not (isinstance(extractor_processors, ExtractorProcessor) or
                  isinstance(extractor_processors, types.ListType)):
              raise ValueError(
                  "extractor_processors must be an ExtractorProcessor or a list")
  
          if isinstance(extractor_processors, ExtractorProcessor):
              extractor_processor = extractor_processors
              self.input_fields = self.__get_jp(extractor_processor, sub_output)
          elif isinstance(extractor_processors, types.ListType):
              self.input_fields = list()
              for extractor_processor in extractor_processors:
                  if isinstance(extractor_processor, ExtractorProcessor):
                      self.input_fields.append(
                          self.__get_jp(extractor_processor, sub_output))
                  elif isinstance(extractor_processor, list):
                      self.input_fields.append(
                          reduce(lambda a, b: "{}|{}".format(a, b),
                                 ["({})".format(self.__get_jp(x, sub_output))
                                  for x in extractor_processor]))
  
          self.generate_json_paths()
          return self
docs: Instead of specifying fields in the source document to rename
          for the extractor, allows the user to specify ExtractorProcessors that
          are executed earlier in the chain and generate json paths from
          their output fields