private void initialize(String name) {
            if (! initialized) {
                initialized = true;
                path2buf = new HashMap<String, byte[]>();

                InputStream is = getSourceOfZipStream().getResource(name);
                ZipInputStream zis = createZipInputStream(is);

                if (zis != null) {
                    ZipEntry entry;
                    try {
                        entry = zis.getNextEntry();
                        while (entry != null) {

                            byte[] buf = entryToByteArray(zis, entry);
                            logInitialize("precaching entry.name=" + entry.getName() + " isDirectory=" + entry.isDirectory() + " .size=" + entry.getSize() + " bufsize=" + buf.length);
                            if (! entry.isDirectory()) {
                                path2buf.put(entry.getName(), buf);
                            }

                            entry = zis.getNextEntry();
                        }
                    } catch (IOException e) {
                        logInitialize("precaching failed with IOException: " + e);
                        noteIOException(name, e);
                    }
                }
                try {
                    if (zis != null) {
                        zis.close();
                        zis = null;
                    }
                } catch (IOException e) {
                    noteIOExceptionIgnorable(name, e);
                }
            }
        }