code: public static SortedMap<String, String> getVersionMap(final URL anURL) {
  
          // Check sanity
          Validate.notNull(anURL, "anURL");
  
          final SortedMap<String, String> toReturn = new TreeMap<String, String>();
  
          try {
              final BufferedReader in = new BufferedReader(new InputStreamReader(anURL.openStream()));
              String aLine = null;
  
              while ((aLine = in.readLine()) != null) {
  
                  final String trimmedLine = aLine.trim();
  
                  if (trimmedLine.contains(GENERATION_PREFIX)) {
                      toReturn.put(BUILDTIME_KEY, aLine.substring(GENERATION_PREFIX.length()));
                  } else if ("".equals(trimmedLine) || trimmedLine.startsWith("#")) {
                      // Empty lines and comments should be ignored.
                      continue;
                  } else if (trimmedLine.contains("=")) {
  
                      // Stash this for later use.
                      StringTokenizer tok = new StringTokenizer(trimmedLine, KEY_VALUE_SEPARATOR, false);
                      Validate.isTrue(tok.countTokens() == 2, "Found incorrect dependency.properties line ["
                              + aLine + "]");
  
                      final String key = tok.nextToken().trim();
                      final String value = tok.nextToken().trim();
  
                      toReturn.put(key, value);
                  }
              }
          } catch (IOException e) {
              throw new IllegalStateException("Could not parse dependency properties '" + anURL.toString() + "'", e);
          }
  
          // All done.
          return toReturn;
      }
docs: Extracts all build-time dependency information from a dependencies.properties file
  embedded in this plugin's JAR.
  
  @param anURL The non-empty URL to a dependencies.properties file.
  @return A SortedMap holding all entries in the dependencies.properties file, plus its build
  time which is found under the {@code buildtime} key.
  @throws java.lang.IllegalStateException if no artifact in the current Thread's context ClassLoader
  contained the supplied artifactNamePart.