code: public Class<?>[] compile(SourceFolder[] src, UnifiedNodeReference... sourceReferences) throws IOException
     {
        SourceFile[] files = new SourceFile[sourceReferences.length];
        for (int i = 0; i < sourceReferences.length; i++)
           files[i] = new SourceFile(sourceReferences[i].getURL());
        return doCompile((JcrGroovyClassLoader)classLoaderProvider.getGroovyClassLoader(src), files);
     }
docs: Compile Groovy source that located in <code>sourceReferences</code>.
  Compiled sources can be dependent to each other and dependent to Groovy
  sources that are accessible for this compiler and with additional Groovy
  sources <code>src</code>. <b>NOTE</b> To be able load Groovy source files
  from specified folders the following rules must be observed:
  <ul>
  <li>Groovy source files must be located in folder with respect to package
  structure</li>
  <li>Name of Groovy source files must be the same as name of class located
  in file</li>
  <li>Groovy source file must have extension '.groovy'</li>
  </ul>
  <br>
  Example: If source stream that we want compile contains the following
  code:
  
  <pre>
  package c.b.a
  
  import a.b.c.A
  
  class B extends A {
  // Do something.
  }
  </pre>
  
  Assume we store dependencies in JCR then URL of folder with Groovy sources
  may be like this: <code>jcr://repository/workspace#/groovy-library</code>.
  Then absolute path to JCR node that contains Groovy source must be as
  following: <code>/groovy-library/a/b/c/A.groovy</code>
  
  @param src additional Groovy source location that should be added in
  class-path when compile <code>sourceReferences</code>
  @param sourceReferences references to Groovy sources to be compiled
  @return result of compilation
  @throws IOException if any i/o errors occurs