public static final AttackInfo parseMesoExplosion(final LittleEndianAccessor lea, final AttackInfo ret) {
	byte bullets;
	if (ret.hits == 0) {
	    lea.skip(4);
	    bullets = lea.readByte();
	    for (int j = 0; j < bullets; j++) {
		ret.allDamage.add(new AttackPair(Integer.valueOf(lea.readInt()), null));
		lea.skip(1);
	    }
	    lea.skip(2); // 8F 02
	    return ret;
	}

	int oid;
	List<Integer> allDamageNumbers;

	for (int i = 0; i < ret.targets; i++) {
	    oid = lea.readInt();
	    lea.skip(12);
	    bullets = lea.readByte();
	    allDamageNumbers = new ArrayList<Integer>();
	    for (int j = 0; j < bullets; j++) {
		allDamageNumbers.add(Integer.valueOf(lea.readInt()));
	    }
	    ret.allDamage.add(new AttackPair(Integer.valueOf(oid), allDamageNumbers));
	    lea.skip(4); // C3 8F 41 94, 51 04 5B 01
	}
	lea.skip(4);
	bullets = lea.readByte();

	for (int j = 0; j < bullets; j++) {
	    ret.allDamage.add(new AttackPair(Integer.valueOf(lea.readInt()), null));
	    lea.skip(1);
	}
	lea.skip(2); // 8F 02/ 63 02

	return ret;
    }