def get_statements(self, reprocess=False):
        if self._statements is None or reprocess:
            if self.content is None:
                self._statements = []
                return []
            if self.reader == ReachReader.name:
                if self.format == formats.JSON:
                    json_str = json.dumps(self.content)
                    processor = reach.process_json_str(json_str)
                else:
                    raise ReadingError("Incorrect format for Reach output: %s."
                                       % self.format)
            elif self.reader == SparserReader.name:
                if self.format == formats.JSON:
                    processor = sparser.process_json_dict(self.content)
                    if processor is not None:
                        processor.set_statements_pmid(None)
                else:
                    raise ReadingError("Sparser should only ever be JSON, not "
                                       "%s." % self.format)
            elif self.reader == TripsReader.name:
                processor = trips.process_xml(self.content)
            else:
                raise ReadingError("Unknown reader: %s." % self.reader)
            if processor is None:
                logger.error("Production of statements from %s failed for %s."
                             % (self.reader, self.content_id))
                stmts = []
            else:
                stmts = processor.statements
            self._statements = stmts[:]
        else:
            stmts = self._statements[:]
        return stmts