def METHOD_NAME(self):
    if self.level > 0:
        return ''
    line = self.fp.METHOD_NAME()
    # Real EOF?
    if not line:
        self.level = len(self.stack)
        self.last = (self.level > 0)
        if self.last:
            raise Error, 'sudden EOF in MultiFile.readline()'
        return ''
    assert self.level == 0
    # Fast check to see if this is just data
    if self.is_data(line):
        return line
    else:
        # Ignore trailing whitespace on marker lines
        marker = line.rstrip()
    # No?  OK, try to match a boundary.
    # Return the line (unstripped) if we don't.
    for i, sep in enumerate(reversed(self.stack)):
        if marker == self.section_divider(sep):
            self.last = 0
            break
        elif marker == self.end_marker(sep):
            self.last = 1
            break
    else:
        return line
    # We only get here if we see a section divider or EOM line
    if self.seekable:
        self.lastpos = self.tell() - len(line)
    self.level = i+1
    if self.level > 1:
        raise Error,'Missing endmarker in MultiFile.readline()'
    return ''