docs: private static Object findJarServiceProvider(final String factoryId) throws ConfigurationError {
  
          final String serviceId = "META-INF/services/" + factoryId;
          InputStream is = null;
  
          // First try the Context ClassLoader
          ClassLoader cl = ss.getContextClassLoader();
          if (cl != null) {
              is = ss.getResourceAsStream(cl, serviceId);
  
              // If no provider found then try the current ClassLoader
              if (is == null) {
                  cl = FactoryFinder.class.getClassLoader();
                  is = ss.getResourceAsStream(cl, serviceId);
              }
          } else {
              // No Context ClassLoader, try the current
              // ClassLoader
              cl = FactoryFinder.class.getClassLoader();
              is = ss.getResourceAsStream(cl, serviceId);
          }
  
          if (is == null) {
              // No provider found
              return null;
          }
  
          dPrint("found jar resource=" + serviceId + " using ClassLoader: " + cl);
  
          // Read the service provider name in UTF-8 as specified in
          // the jar spec. Unfortunately this fails in Microsoft
          // VJ++, which does not implement the UTF-8
          // encoding. Theoretically, we should simply let it fail in
          // that case, since the JVM is obviously broken if it
          // doesn't support such a basic standard. But since there
          // are still some users attempting to use VJ++ for
          // development, we have dropped in a fallback which makes a
          // second attempt using the platform's default encoding. In
          // VJ++ this is apparently ASCII, which is a subset of
          // UTF-8... and since the strings we'll be reading here are
          // also primarily limited to the 7-bit ASCII range (at
          // least, in English versions), this should work well
          // enough to keep us on the air until we're ready to
          // officially decommit from VJ++. [Edited comment from
          // jkesselm]
          BufferedReader rd;
          try {
              rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
          } catch (final java.io.UnsupportedEncodingException e) {
              rd = new BufferedReader(new InputStreamReader(is));
          }
  
          String factoryClassName = null;
          try {
              // XXX Does not handle all possible input as specified by the
              // Jar Service Provider specification
              factoryClassName = rd.readLine();
              rd.close();
          } catch (final IOException x) {
              // No provider found
              return null;
          }
  
          if (factoryClassName != null && !"".equals(factoryClassName)) {
              dPrint("found in resource, value=" + factoryClassName);
  
              // Note: here we do not want to fall back to the current
              // ClassLoader because we want to avoid the case where the
              // resource file was found using one ClassLoader and the
              // provider class was instantiated using a different one.
              return newInstance(factoryClassName, cl, false);
          }
  
          // No provider found
          return null;
      }