public static TroopsInfo parse(final String str) { final String content = str.substring(1, str.length() - 1); final TroopsInfo troopsInfo = new TroopsInfo(); if (!content.isEmpty()) { final String[] split = content.split(TO_STRING_DELIMITER); for (final String element : split) { final String[] ts = element.split(TROOP_DELIMITER); if (ts.length != 2) { throw new IllegalArgumentException("Unparseable"); } troopsInfo.add(Troop.fromDescription(ts[1]), Integer.valueOf(ts[0])); } } return troopsInfo; }