public Path copy(final Path source, final Path copy, final TransferStatus status, final ConnectionCallback callback) throws BackgroundException { if(status.getLength() > multipartThreshold) { return new S3MultipartCopyFeature(session, accessControlListFeature).copy(source, copy, status, callback); } else { return new S3CopyFeature(session, accessControlListFeature).copy(source, copy, status, callback); } } }