Handles the parsing of the specified operation using the current
        statements from the buffer/cache. If 'comment' is not None, the 
        statement in comment is parsed instead.

        :arg mode: override the 'insert', 'replace' or 'delete' specifier.

def parse(self, op, mode=None):
        """Handles the parsing of the specified operation using the current
        statements from the buffer/cache. If 'comment' is not None, the 
        statement in comment is parsed instead.

        :arg mode: override the 'insert', 'replace' or 'delete' specifier.
        """
        #We need to handle docstrings separately because they are XML and slight
        #insertions/changes can't be handled using only one line. We have to get
        #hold of the entire XML block and parse it all at once again.
        if op.state[0] is None:
            linenum, statement, length = op.curcached
        else:
            linenum, statement, length = op.curbuffer

        #If there is nothing to run, it is pointless carrying on down the
        #stack of functions before this gets realized.
        if statement != "":
            self._current_op = op
            #We may need to override the mode for the 'replace' operation.
            nmode = mode if mode is not None else op.mode

            #We are dealing with pure code, decide what type the owner is and run
            #their method for real time updating.
            if isinstance(op.element, Executable):
                op.element.rt_update(statement, linenum, nmode, 
                                     op.context.parser.modulep.xparser)
            elif isinstance(op.element, CustomType):
                op.element.rt_update(statement, linenum, nmode, 
                                     op.context.parser.modulep.tparser)
            elif isinstance(op.element, Module):
                op.element.rt_update(statement, linenum, nmode, 
                                     op.context.parser.modulep, self)

        if len(self.additions) > 0:
            #Some new instances were created from a single line signature.
            #probably any additional statements in the list being executed
            #include items that should belong to the new instance.
            for add in self.additions:
                instance, module = add
                self.parent.update_instance_extent(instance, module, op)

            self.additions = []