code: def _process_interaction(self, source_id, interaction, text, pmid,
                               extra_annotations):
          verb = interaction[0].lower()
          subj = interaction[-2]
          obj = interaction[-1]
          subj = self._make_agent(subj)
          obj = self._make_agent(obj)
          annotations = deepcopy(extra_annotations)
          if 'interaction' in extra_annotations:
              logger.warning("'interaction' key of extra_annotations ignored" +
                             " since this is reserved for storing the raw ISI " +
                             "input.")
          annotations['source_id'] = source_id
          annotations['interaction'] = interaction
          ev = ist.Evidence(source_api='isi',
                            pmid=pmid,
                            text=text.rstrip(),
                            annotations=annotations)
          cataylst_specified = False
          if len(interaction) == 4:
              catalyst = interaction[1]
              if catalyst is not None:
                  cataylst_specified = True
          self.verbs.add(verb)
          statement = None
          if verb in verb_to_statement_type:
              statement_class = verb_to_statement_type[verb]
              if statement_class == ist.Complex:
                  statement = ist.Complex([subj, obj], evidence=ev)
              else:
                  statement = statement_class(subj, obj, evidence=ev)
          if statement is not None:
              already_have = False
              if type(statement) == ist.Complex:
                  for old_s in self.statements:
                      old_id = statement.evidence[0].source_id
                      new_id = old_s.evidence[0].source_id
                      if type(old_s) == ist.Complex and old_id == new_id:
                          old_statement_members = \
                                  [m.db_refs['TEXT'] for m in old_s.members]
                          old_statement_members = sorted(old_statement_members)
                          new_statement_members = [m.db_refs['TEXT']
                                                   for m in statement.members]
                          new_statement_members = sorted(new_statement_members)
                          if old_statement_members == new_statement_members:
                              already_have = True
                              break
              if not already_have:
                  self.statements.append(statement)