class SyncTransfer 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("Children for %s", directory));
        }
        final Set<TransferItem> children = new HashSet<TransferItem>();
        final Find finder = session.getFeature(Find.class, new DefaultFindFeature(session)).withCache(cache);
        if(finder.find(directory)) {
            children.addAll(download.list(session, directory, local, listener));
        }
        if(local.exists()) {
            children.addAll(upload.list(session, directory, local, listener));
        }
        return new ArrayList<TransferItem>(children);
    }

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

}