private void parseDirectory(WZDirectoryEntry dir) {
		int entries = WZTool.readValue(lea);
		for (int i = 0; i < entries; i++) {
			byte marker = lea.readByte();

			String name = null;
			@SuppressWarnings("unused")
			int dummyInt;
			int size, checksum;

			switch (marker) {
				case 0x02:
					name = WZTool.readDecodedStringAtOffsetAndReset(slea, lea.readInt() + this.headerSize + 1);
					size = WZTool.readValue(lea);
					checksum = WZTool.readValue(lea);
					dummyInt = lea.readInt();
					dir.addFile(new WZFileEntry(name, size, checksum, dir));
					break;

				case 0x03:
				case 0x04:
					name = WZTool.readDecodedString(lea);
					size = WZTool.readValue(lea);
					checksum = WZTool.readValue(lea);
					dummyInt = lea.readInt();
					if (marker == 3) {
						dir.addDirectory(new WZDirectoryEntry(name, size, checksum, dir));
					} else {
						dir.addFile(new WZFileEntry(name, size, checksum, dir));
					}
					break;
				default:
					log.error("Default case in marker ({}):/", marker);
			}
		}

		for (MapleDataDirectoryEntry idir : dir.getSubdirectories()) {
			parseDirectory((WZDirectoryEntry) idir);
		}
	}