public final String getSummary() {
	final StringBuilder ret = new StringBuilder();
	final List<CheatingOffenseEntry> offenseList = new ArrayList<CheatingOffenseEntry>();
	synchronized (offenses) {
	    for (final CheatingOffenseEntry entry : offenses.values()) {
		if (!entry.isExpired()) {
		    offenseList.add(entry);
		}
	    }
	}
	Collections.sort(offenseList, new Comparator<CheatingOffenseEntry>() {

	    @Override
	    public final int compare(final CheatingOffenseEntry o1, final CheatingOffenseEntry o2) {
		final int thisVal = o1.getPoints();
		final int anotherVal = o2.getPoints();
		return (thisVal < anotherVal ? 1 : (thisVal == anotherVal ? 0 : -1));
	    }
	});
	final int to = Math.min(offenseList.size(), 4);
	for (int x = 0; x < to; x++) {
	    ret.append(StringUtil.makeEnumHumanReadable(offenseList.get(x).getOffense().name()));
	    ret.append(": ");
	    ret.append(offenseList.get(x).getCount());
	    if (x != to - 1) {
		ret.append(" ");
	    }
	}
	return ret.toString();
    }