public void download(URI address, File destination) throws Exception {
   ProgressLogger progressLogger = progressLoggerFactory.newOperation(DistributionFactory.class);
   progressLogger.setDescription(String.format("Download %s", address));
   progressLogger.started();
   try {
     new Download().download(address, destination);
   } finally {
     progressLogger.completed();
   }
 }
 public ClassPath getToolingImplementationClasspath(
     ProgressLoggerFactory progressLoggerFactory, File userHomeDir) {
   ProgressLogger progressLogger = progressLoggerFactory.newOperation(DistributionFactory.class);
   progressLogger.setDescription("Validate distribution");
   progressLogger.started();
   try {
     return getToolingImpl();
   } finally {
     progressLogger.completed();
   }
 }
 public void beforeResolve(ResolvableDependencies dependencies) {
   logger = loggerFactory.newOperation(DependencyResolutionLogger.class);
   logger.setDescription(String.format("Resolve %s", dependencies));
   logger.setShortDescription(String.format("Resolve %s", dependencies));
   logger.started();
 }