docs: File downloadFromRemoteRepository(ArtifactCoordinates artifactCoordinates, String packaging, Path artifactDirectory) {
          String artifactRelativeHttpPath = toGradleArtifactPath(artifactCoordinates);
          String artifactRelativeMetadataHttpPath = artifactCoordinates.relativeMetadataPath('/');
          for (String remoteRepos : remoteRepositories) {
              String artifactAbsoluteHttpPath = remoteRepos + artifactRelativeHttpPath + ".";
              File targetArtifactPomDirectory = artifactDirectory.resolve(computeGradleUUID(artifactCoordinates + ":pom")).toFile();
              File targetArtifactDirectory = artifactDirectory.resolve(computeGradleUUID(artifactCoordinates + ":" + packaging)).toFile();
  
              File artifactFile = doDownload(remoteRepos, artifactAbsoluteHttpPath, artifactRelativeHttpPath, artifactCoordinates, packaging, targetArtifactPomDirectory, targetArtifactDirectory);
              if (artifactFile != null) {
                  return artifactFile; // Success
              }
  
              //Try to doDownload the snapshot version
              if (artifactCoordinates.isSnapshot()) {
                  String remoteMetadataPath = remoteRepos + artifactRelativeMetadataHttpPath;
                  try {
                      String timestamp = MavenArtifactUtil.downloadTimestampVersion(artifactCoordinates + ":" + packaging, remoteMetadataPath);
  
                      String timestampedArtifactRelativePath = artifactCoordinates.relativeArtifactPath('/', timestamp);
                      String artifactTimestampedAbsoluteHttpPath = remoteRepos + timestampedArtifactRelativePath + ".";
                      File targetTimestampedArtifactPomDirectory = artifactDirectory.resolve(computeGradleUUID(artifactCoordinates + ":" + timestamp + ":pom")).toFile();
                      File targetTimestampedArtifactDirectory = artifactDirectory.resolve(computeGradleUUID(artifactCoordinates + ":" + packaging)).toFile();
  
                      File snapshotArtifactFile = doDownload(remoteRepos, artifactTimestampedAbsoluteHttpPath, timestampedArtifactRelativePath, artifactCoordinates, packaging, targetTimestampedArtifactPomDirectory, targetTimestampedArtifactDirectory);
                      if (snapshotArtifactFile != null) {
                          return snapshotArtifactFile; //Success
                      }
                  } catch (XPathExpressionException | IOException ex) {
                      Module.getModuleLogger().trace(ex, "Could not doDownload '%s' from '%s' repository", artifactRelativeHttpPath, remoteRepos);
                      // try next one
                  }
              }
          }
          return null;
      }