def readarray(self, source, setobj=lambda x: None, original=None):
        special = self.special
        result = PdfArray()
        setobj(result)

        for value in source:
            if value == ']':
                break
            if value in special:
                value = special[value](source)
            elif value == 'R':
                generation = result.pop()
                value = self.readindirect(result.pop(), generation)
            result.append(value)
        return result
    def readarray(self, source, setobj=lambda x:None, original=None):
        special = self.special
        result = PdfArray()
        setobj(result)

        for value in source:
            if value == ']':
                break
            if value in special:
                value = special[value](source)
            elif value == 'R':
                generation = result.pop()
                value = self.readindirect(result.pop(), generation)
            result.append(value)
        return result