class CopyTransfer extends Transfer {

    @Override
    public List<TransferItem> list(final Session<?> session, final Path directory, final Local local,
                                   final ListProgressListener listener) throws BackgroundException {
        if(log.isDebugEnabled()) {
            log.debug(String.format("List children for %s", directory));
        }
        final AttributedList<Path> list = session.getFeature(ListService.class).list(directory, listener).filter(comparator, filter);
        final Path copy = mapping.get(directory);
        for(Path p : list) {
            mapping.put(p, new Path(copy, p.getName(), p.getType(), p.attributes()));
        }
        final List<TransferItem> nullified = new ArrayList<TransferItem>();
        for(Path p : list) {
            nullified.add(new TransferItem(p));
        }
        return nullified;
    }

    public  CopyTransfer(final Host source, final Host destination,
                        final Map<Path, Path> selected);
    public  CopyTransfer(final Host source, final Host destination,
                        final Map<Path, Path> selected, final BandwidthThrottle bandwidth);

}