code: private static void getThreadGroups(ThreadGroup tg, List ltg) {
  		try {
  			final Field fgroups = ThreadGroup.class.getDeclaredField("groups");
  			fgroups.setAccessible(true);
  			ThreadGroup[] array = (ThreadGroup[]) fgroups.get(tg);
  			if (array != null) {
  				for (int i = 0; i < array.length; i++) {
  					ThreadGroup element = array[i];
  					if (!ltg.contains(element)) {
  						CClassLoader.getThreadGroups(element, ltg);
  						ltg.add(element);
  					}
  				}
  			}
  		} catch (Throwable ignore) {
  		}
  	}
docs: end getRootLoader()