class SyncTransfer extends Transfer {

    @Override
    public TransferPathFilter filter(final Session<?> source, final Session<?> destination, final TransferAction action, final ProgressListener listener) {
        if(log.isDebugEnabled()) {
            log.debug(String.format("Filter transfer with action %s", action));
        }
        // Set chosen action (upload, download, mirror) from prompt
        return new SynchronizationPathFilter(
            comparison = new CachingComparisonServiceFilter(
                new ComparisonServiceFilter(source, source.getHost().getTimezone(), listener).withCache(cache)
            ).withCache(comparisons),
            download.filter(source, destination, TransferAction.overwrite, listener),
            upload.filter(source, destination, TransferAction.overwrite, listener),
            action
        ).withCache(cache);
    }

    public  SyncTransfer(final Host host, final TransferItem item);
    public  SyncTransfer(final Host host, final TransferItem item, final TransferAction action);

}