// Path: spi/src/main/java/com/redhat/ceylon/cmr/spi/Node.java
// public interface Node {
//     String getLabel();
// 
//     <T> T getValue(Class<T> valueType);
// 
//     Node getChild(String label);
// 
//     Iterable<? extends Node> getChildren();
// 
//     boolean hasBinaries();
// 
//     /**
//      * @deprecated see getSizedInputStream
//      */
//     InputStream getInputStream() throws IOException;
// 
//     SizedInputStream getSizedInputStream() throws IOException;
// 
//     <T> T getContent(Class<T> contentType) throws IOException;
// 
//     long getLastModified() throws IOException;
// 
//     long getSize() throws IOException;
// 
//     Node getParent(String label);
// 
//     Iterable<? extends Node> getParents();
// 
//     boolean isRemote();
// 
//     String getDisplayString();
// 
//     String getStoreDisplayString();
// }


import java.io.File;
import java.net.Proxy;
import com.redhat.ceylon.cmr.api.CmrRepository;
import com.redhat.ceylon.cmr.spi.Node;
import com.redhat.ceylon.cmr.spi.StructureBuilder;
import com.redhat.ceylon.common.log.Logger;

        throw new IllegalArgumentException("No Maven repository found!");
    }

    public static CmrRepository getMavenRepository() {
        return new MavenRepository(new MavenContentStore().createRoot());
    }

    public static CmrRepository getMavenRepository(File mvnRepository) {
        return new MavenRepository(new MavenContentStore(mvnRepository).createRoot());
    }

    public static CmrRepository getMavenRepository(String repositoryURL, Logger log, boolean offline, int timeout, Proxy proxy) {
        return new MavenRepository(new RemoteContentStore(repositoryURL, log, offline, timeout, proxy).createRoot());
    }

    public static CmrRepository getMavenRepository(StructureBuilder structureBuilder) {
        return new MavenRepository(structureBuilder.createRoot());
    }

    private static class MavenContentStore extends FileContentStore {
        private MavenContentStore() {
            this(getMavenHome());
        }

        private MavenContentStore(File root) {
            super(root);
        }

        @Override
// Path: spi/src/main/java/com/redhat/ceylon/cmr/spi/Node.java
// public interface Node {
//     String getLabel();
// 
//     <T> T getValue(Class<T> valueType);
// 
//     Node getChild(String label);
// 
//     Iterable<? extends Node> getChildren();
// 
//     boolean hasBinaries();
// 
//     /**
//      * @deprecated see getSizedInputStream
//      */
//     InputStream getInputStream() throws IOException;
// 
//     SizedInputStream getSizedInputStream() throws IOException;
// 
//     <T> T getContent(Class<T> contentType) throws IOException;
// 
//     long getLastModified() throws IOException;
// 
//     long getSize() throws IOException;
// 
//     Node getParent(String label);
// 
//     Iterable<? extends Node> getParents();
// 
//     boolean isRemote();
// 
//     String getDisplayString();
// 
//     String getStoreDisplayString();
// }


// Path: impl/src/main/java/com/redhat/ceylon/cmr/impl/MavenRepositoryHelper.java
import java.io.File;
import java.net.Proxy;
import com.redhat.ceylon.cmr.api.CmrRepository;
import com.redhat.ceylon.cmr.spi.Node;
import com.redhat.ceylon.cmr.spi.StructureBuilder;
import com.redhat.ceylon.common.log.Logger;


        throw new IllegalArgumentException("No Maven repository found!");
    }

    public static CmrRepository getMavenRepository() {
        return new MavenRepository(new MavenContentStore().createRoot());
    }

    public static CmrRepository getMavenRepository(File mvnRepository) {
        return new MavenRepository(new MavenContentStore(mvnRepository).createRoot());
    }

    public static CmrRepository getMavenRepository(String repositoryURL, Logger log, boolean offline, int timeout, Proxy proxy) {
        return new MavenRepository(new RemoteContentStore(repositoryURL, log, offline, timeout, proxy).createRoot());
    }

    public static CmrRepository getMavenRepository(StructureBuilder structureBuilder) {
        return new MavenRepository(structureBuilder.createRoot());
    }

    private static class MavenContentStore extends FileContentStore {
        private MavenContentStore() {
            this(getMavenHome());
        }

        private MavenContentStore(File root) {
            super(root);
        }

        @Override
        protected void delete(File file, Node node) {