code: public synchronized static void addClassLoadingExtension(ClassLoaderExtension extension, boolean top)
      {
        /**
         * now at the first look this looks somewhat strange
         * but to get the best performance access we assign new native
         * arrays to our static variable
         * 
         * we have to synchronized nevertheless because if two threads try to register
         * loaders at the same time none of them should get lost
         */
          ClassLoaderExtension [] retVal = new ClassLoaderExtension[classLoadingExtensions.length+1];
          ArrayList extensions = new ArrayList(classLoadingExtensions.length+1);
  
          if(!top)
          {
              extensions.addAll(Arrays.asList(classLoadingExtensions));
          }
          extensions.add(extension);
          if(top)
          {
              extensions.addAll(Arrays.asList(classLoadingExtensions));
          }    
  
          classLoadingExtensions = (ClassLoaderExtension []) extensions.toArray(retVal);
      }
docs: ~ Methods ------------------------------------------------------------------------------------