code: public static InputStream findResourceAsStream(final String resourceName) {
  
          // First try the context class loader
          final ClassLoader contextClassLoader = getThreadContextClassLoader();
          if (contextClassLoader != null) {
              final InputStream inputStream = contextClassLoader.getResourceAsStream(resourceName);
              if (inputStream != null) {
                  return inputStream;
              }
              // Pass-through, there might be other ways of obtaining it
              // note anyway that this is not really normal: the context class loader should be
              // either able to resolve any of our application's resources, or to delegate to a class
              // loader that can do that.
          }
  
          // The thread context class loader might have already delegated to both the class
          // and system class loaders, in which case it makes little sense to query them too.
          if (!isKnownLeafClassLoader(contextClassLoader)) {
  
              // The context class loader didn't help, so... maybe the class one?
              if (classClassLoader != null && classClassLoader != contextClassLoader) {
                  final InputStream inputStream = classClassLoader.getResourceAsStream(resourceName);
                  if (inputStream != null) {
                      return inputStream;
                  }
                  // Pass-through, maybe the system class loader can do it? - though it would be *really* weird...
              }
  
              if (!systemClassLoaderAccessibleFromClassClassLoader) {
  
                  // The only class loader we can rely on for not being null is the system one
                  if (systemClassLoader != null && systemClassLoader != contextClassLoader && systemClassLoader != classClassLoader) {
                      final InputStream inputStream = systemClassLoader.getResourceAsStream(resourceName);
                      if (inputStream != null) {
                          return inputStream;
                      }
                      // Pass-through, anyway we have a return null after this...
                  }
  
              }
  
          }
  
          return null;
  
      }
docs: <p>
  Try to obtain a resource by name, returning {@code null} if it could not be located.
  </p>
  <p>
  This method works very similarly to {@link #loadResourceAsStream(String)} but will just return {@code null}
  if the resource cannot be located by the sequence of class loaders being tried.
  </p>
  
  @param resourceName the name of the resource to be obtained.
  @return an input stream on the resource, or {@code null} if it could not be located.
  
  @since 3.0.3