@Override
  protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
    Class c = null;

    if (name.startsWith("org.apache")) {
      // First, check if the class has already been loaded
      c = findLoadedClass(name);

      // if not loaded, search the local (child) resources
      if (c == null) {
        try {
          c = findClass(name);
        } catch (ClassNotFoundException cnfe) {
          // ignore
        }
      }
    }

    // if we could not find it, delegate to parent
    // Note that we don't attempt to catch any ClassNotFoundException
    if (c == null) {
      if (getParent() != null) {
        c = getParent().loadClass(name);
      } else {
        c = getSystemClassLoader().loadClass(name);
      }
    }

    if (resolve) {
      resolveClass(c);
    }

    return c;
  }
We override the parent-first behavior established by java.lang.Classloader.
extensions/geode-modules-session/src/integrationTest/java/org/apache/geode/modules/session/junit/ChildFirstClassLoader.java