public synchronized Class<?> compileSource(String name, String code) throws Exception {
    Class<?> c = cache.get(name);
    if (c == null) {
      c = compileSource0(name, code);
      cache.put(name, c);
    }
    return c;
  }