code: private List<InputStream> getInputStreamsForFile(final String filename) throws IOException {
      // First try using the PropertyManager's class loader
      Enumeration<URL> urls = PropertyManager.class.getClassLoader().getResources(filename);
      final List<InputStream> ioStreams = new ArrayList<InputStream>();
  
      while (urls.hasMoreElements()) {
        ioStreams.add(urls.nextElement().openStream());
      }
      if (ioStreams.size() > 0)
        return ioStreams;
  
      // Second try, use the thread context classloader
      urls = Thread.currentThread().getContextClassLoader().getResources(filename);
      while (urls.hasMoreElements()) {
        ioStreams.add(urls.nextElement().openConnection().getInputStream());
      }
      if (ioStreams.size() > 0)
        return ioStreams;
  
      // That didn't work, try again... (This way only works for single items)
      final URL filePathURL = PropertyManager.class.getResource(filename);
      if (filePathURL != null) {
        ioStreams.add(filePathURL.openConnection().getInputStream());
        return ioStreams;
      }
  
      ioStreams.add(new ClassPathResource(filename).getInputStream());
      return ioStreams;
    }
docs: Opens an inputstream (wrapped in a buffer) for the given filename using
  several mechanisms, the first being the classpath, then looking in the same
  directory as the PropertyManager (this mode will only load fall-through
  files that are included in the Pelzer.util jar)