if (loader instanceof MyClassLoader) { return ((MyClassLoader) loader).getClassAnnotation(); }  String s = (String) cacheAnnotations.get (loader);  if (s != null) return s;  if (loader instanceof URLClassLoader) { URL[] urls = ((URLClassLoader) loader).getURLs();  if (urls.length == 0) return null;  StringBuffer annotation = new StringBuffer (64 * urls.length);  for (int i = 0; i < urls.length; i++) { annotation.append (urls [i].toExternalForm()); annotation.append (' '); }  s = annotation.toString(); cacheAnnotations.put (loader, s); return s; }  return System.getProperty ("java.rmi.server.codebase"); }
  public static String getClassAnnotation (Class cl)  {    ClassLoader loader = cl.getClassLoader();        if (loader == null        || loader == ClassLoader.getSystemClassLoader())      {        return System.getProperty ("java.rmi.server.codebase");      }    if (loader instanceof MyClassLoader)      {        return ((MyClassLoader) loader).getClassAnnotation();      }    String s = (String) cacheAnnotations.get (loader);    if (s != null)      return s;    if (loader instanceof URLClassLoader)      {        URL[] urls = ((URLClassLoader) loader).getURLs();        if (urls.length == 0)          return null;        StringBuffer annotation = new StringBuffer (64 * urls.length);        for (int i = 0; i < urls.length; i++)          {            annotation.append (urls [i].toExternalForm());            annotation.append (' ');          }        s = annotation.toString();        cacheAnnotations.put (loader, s);        return s;      }    return System.getProperty ("java.rmi.server.codebase");  }