def METHOD_NAME(filename, output_filename_trunk=None, step0=0, steps=None,
                fields=None, linearization=None):
    """Dump a multi-time-step results file into a sequence of VTK files."""
    def _save_step(suffix, out, mesh):
        if linearization is not None:
            output('linearizing...')
            out = _linearize(out, fields, linearization)
            output('...done')
            for key, val in six.iteritems(out):
                lmesh = val.get('mesh', mesh)
                lmesh.write(output_filename_trunk + '_' + key + suffix,
                            io='auto', out={key : val})
                if hasattr(val, 'levels'):
                    output('max. refinement per group:', val.levels)
        else:
            mesh.write(output_filename_trunk + suffix, io='auto', out=out)
    output('dumping to VTK...')
    io = MeshIO.any_from_filename(filename)
    mesh = Mesh.from_file(filename, io=io)
    if output_filename_trunk is None:
        output_filename_trunk = get_trunk(filename)
    try:
        ts = TimeStepper(*io.read_time_stepper())
        all_steps, times, nts, dts = extract_times(filename)
    except ValueError:
        output('no time stepping info found, assuming single step')
        out = io.read_data(0)
        if out is not None:
            _save_step('.vtk', out, mesh)
        ret = None
    else:
        ts.times = times
        ts.n_step = times.shape[0]
        if steps is None:
            ii0 = nm.searchsorted(all_steps, step0)
            iterator = ((all_steps[ii], times[ii])
                        for ii in range(ii0, len(times)))
        else:
            iterator = [(step, ts.times[step]) for step in steps]
        max_step = all_steps.max()
        for step, time in iterator:
            output(ts.format % (step, max_step))
            out = io.read_data(step)
            if out is None: break
            _save_step('.' + ts.suffix % step + '.vtk', out, mesh)
        ret = ts.suffix
    output('...done')
    return ret