public ConditionNode parse(byte[] levelInfData, int pos, EobGlobalData eobGlobalData) {
        if (ByteArrayUtility.getByte(levelInfData, pos) == 0xF3) {
            if (ByteArrayUtility.getByte(levelInfData, pos + 1) == 0xFF) {
                return new MonsterCountLeaf(levelInfData, pos, 4);
            }

            List<ExpressionLeaf> nodes = new ArrayList<ExpressionLeaf>();
            do {
                nodes.add(new MonsterCountLeaf(levelInfData, pos + nodes.size() + 1, 1));
                nodes.add(new MiscValueLeaf(levelInfData, pos + nodes.size() + 1));
            } while (ByteArrayUtility.getByte(levelInfData, pos + nodes.size() + 1) != 0x00);

            ListNode listNode = new ListNode(levelInfData, pos, nodes.size() + 2);
            listNode.nodes.addAll(nodes);
            for (ExpressionLeaf node : nodes) {
                node.parent = listNode;
            }
            return listNode;
        }
        return null;
    }