public String toString() { StringBuilder sb = new StringBuilder(); List<String> ruleStrings = new ArrayList<String>(); for (String leftChild : binaryRulesByLeftChild.keySet()) { for (BinaryRule binaryRule : getBinaryRulesByLeftChild(leftChild)) { ruleStrings.add(binaryRule.toString()); } } for (String child : unaryRulesByChild.keySet()) { for (UnaryRule unaryRule : getUnaryRulesByChild(child)) { ruleStrings.add(unaryRule.toString()); } } for (String ruleString : CollectionUtils.sort(ruleStrings)) { sb.append(ruleString); sb.append("\n"); } return sb.toString(); }