'return a Traceback instance wrapping part of this Traceback
by provding any combination of path, lineno and firstlineno, the
first frame to start the to-be-returned traceback is determined
this allows cutting the first part of a Traceback instance e.g.
for formatting reasons (removing some uninteresting bits that deal
with handling of the exception/traceback)'

def cut(self, path=None, lineno=None, firstlineno=None, excludepath=None):

    for x in self:
        code = x.frame.code
        codepath = code.path
        if (((path is None) or (codepath == path)) and ((excludepath is None) or (not hasattr(codepath, 'relto')) or (not codepath.relto(excludepath))) and ((lineno is None) or (x.lineno == lineno)) and ((firstlineno is None) or (x.frame.code.firstlineno == firstlineno))):
            return Traceback(x._rawentry, self._excinfo)
    return self
