protected List<List<ComparablePredicate>> computeOutcomePatterns(ComparablePredicate[] sorted) {
ComparablePredicate cp = sorted[0];
List<List<ComparablePredicate>> outcomePatterns = new ArrayList<List<ComparablePredicate>>();
List<ComparablePredicate> newGroup = new ArrayList<ComparablePredicate>();
for (ComparablePredicate predicate : sorted) {
if (cp.compareTo(predicate) == 0) {
newGroup.add(predicate);
} else {
cp = predicate;
outcomePatterns.add(newGroup);
newGroup = new ArrayList<ComparablePredicate>();