m.setSplit(true);
    private void parseCrits(Mech mech, int loc) throws EntityLoadingException {        // check for removed arm actuators        if (!(mech instanceof QuadMech)) {            if (loc == Mech.LOC_LARM || loc == Mech.LOC_RARM) {                if (!critData[loc][3].equals("Hand Actuator")) {                    mech.setCritical(loc, 3, null);                }                if (!critData[loc][2].equals("Lower Arm Actuator")) {                    mech.setCritical(loc, 2, null);                }            }        }        // go thru file, add weapons        for (int i = 0; i < mech.getNumberOfCriticals(loc); i++) {            // if the slot's full already, skip it.            if (mech.getCritical(loc, i) != null) {                continue;            }            // parse out and add the critical            String critName = critData[loc][i];            boolean rearMounted = false;            boolean split = false;            if (critName.equalsIgnoreCase("Fusion Engine")                    || critName.equalsIgnoreCase("Engine")) {                mech.setCritical(loc,i, new CriticalSlot(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_ENGINE));                continue;            } else if (critName.equalsIgnoreCase("Life Support")) {                mech.setCritical(loc,i, new CriticalSlot(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_LIFE_SUPPORT));                continue;            } else if (critName.equalsIgnoreCase("Sensors")) {                mech.setCritical(loc,i, new CriticalSlot(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_SENSORS));                continue;            } else if (critName.equalsIgnoreCase("Cockpit")) {                mech.setCritical(loc,i, new CriticalSlot(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_COCKPIT));                continue;            } else if (critName.equalsIgnoreCase("Gyro")) {                mech.setCritical(loc,i, new CriticalSlot(CriticalSlot.TYPE_SYSTEM, Mech.SYSTEM_GYRO));                continue;            }            if (critName.endsWith("(R)")) {                rearMounted = true;                critName = critName.substring(0, critName.length() - 3).trim();            }            if (critName.endsWith("(Split)")) {                split = true;                critName = critName.substring(0, critName.length() - 7).trim();            }            if (critName.equalsIgnoreCase("Armored Cowl")) {                mech.setCowl(5); // Cowl starts with 5 points of armor            }                        try {                EquipmentType etype = EquipmentType.get(critName);                if (etype != null) {                    if (etype.isSpreadable()) {                        // do we already have one of these?  Key on Type                        Mounted m = (Mounted)hSharedEquip.get(etype);                        if (m != null) {                            // use the existing one                            mech.addCritical(loc, new CriticalSlot(CriticalSlot.TYPE_EQUIPMENT,                                    mech.getEquipmentNum(m), etype.isHittable()));                            continue;                        }                        else {                            m = mech.addEquipment(etype, loc, rearMounted);                            hSharedEquip.put(etype, m);                        }                    }                    else if (split) {                        // do we already have this one in this or an outer location?                        Mounted m = null;                        boolean bFound = false;                        for (int x = 0, n = vSplitWeapons.size(); x < n; x++) {                            m = (Mounted)vSplitWeapons.elementAt(x);                            int nLoc = m.getLocation();                            if ((nLoc == loc || loc == Mech.getInnerLocation(nLoc))                                        && m.getType() == etype) {                                bFound = true;                                break;                            }                        }                        if (bFound) {                            m.setFoundCrits(m.getFoundCrits() + 1);                            if (m.getFoundCrits() >= etype.getCriticals(mech)) {                                vSplitWeapons.removeElement(m);                            }                            // give the most restrictive location for arcs                            m.setLocation(Mech.mostRestrictiveLoc(loc, m.getLocation()));                        }                        else {                            // make a new one                            m = new Mounted(mech, etype);                            m.setSplit(true);                            m.setFoundCrits(1);                            vSplitWeapons.addElement(m);                        }                        mech.addEquipment(m, loc, rearMounted);                        //mech.addCritical(loc, new CriticalSlot(CriticalSlot.TYPE_EQUIPMENT,                        //        mech.getEquipmentNum(m), etype.isHittable()));                    }                    else {                        mech.addEquipment(etype, loc, rearMounted);                    }                } else {                    if (!critName.equals(MtfFile.EMPTY)) {                        //Can't load this piece of equipment!                        // Add it to the list so we can show the user.                        mech.addFailedEquipment(critName);                        // Make the failed equipment an empty slot                        critData[loc][i] = MtfFile.EMPTY;                        // Compact criticals again                        compactCriticals(mech, loc);                        // Re-parse the same slot, since the compacting                        //  could have moved new equipment to this slot                        i--;                    }                }            } catch (LocationFullException ex) {                throw new EntityLoadingException(ex.getMessage());            }        }    }