docs: @Nonnull
    public static ImmutableKeyValueSource<Symbol, ByteSource> fromZip(final ZipFile zipFile,
        final Function<String, Symbol> idExtractor) {
      final ImmutableMap.Builder<Symbol, String> ret = ImmutableMap.builder();
      // Build a map of the key for each file to the filename
      final Enumeration<? extends ZipEntry> entries = zipFile.entries();
      while (entries.hasMoreElements()) {
        final ZipEntry entry = entries.nextElement();
        final String name = entry.getName();
        // Skip directories
        if (entry.isDirectory()) {
          continue;
        }
        final Symbol id = checkNotNull(idExtractor.apply(name));
        ret.put(id, name);
      }
      return new ZipKeyValueSource(zipFile, ret.build());
    }