@Override
    public List<MavenVersion> getVersionsAvalible(Artifact artifact) throws IOException, DownloadException, SAXException, ParseException {
        Set<MavenVersion> result = new HashSet<MavenVersion>();
        for (String repo : repositories) {
            Metadata artifactMetaData = getArtifactMetaData(repo, artifact);

            if (!artifact.getGroupId().equals(artifactMetaData.getGroupId())) {
                throw new DownloadException("Got groupId " + artifactMetaData.getGroupId() + " which does not match " + artifact.getGroupId());
            }
            if (!artifact.getArtifactId().equals(artifactMetaData.getArtifactId())) {
                throw new DownloadException("Got artifactId " + artifactMetaData.getArtifactId() + " which does not match " + artifact.getArtifactId());
            }
            List<Version> versions = artifactMetaData.getVersioning().getVersions();

            for (Version version : versions) {
                result.add(MavenVersion.parse(version.getVersion()));
            }
        }
        return new ArrayList<MavenVersion>(result);
    }