code: protected List<JCDiagnostic> getWhereClauses() {
          List<JCDiagnostic> clauses = List.nil();
          for (WhereClauseKind kind : WhereClauseKind.values()) {
              List<JCDiagnostic> lines = List.nil();
              for (Map.Entry<Type, JCDiagnostic> entry : whereClauses.get(kind).entrySet()) {
                  lines = lines.prepend(entry.getValue());
              }
              if (!lines.isEmpty()) {
                  String key = kind.key();
                  if (lines.size() > 1)
                      key += ".1";
                  JCDiagnostic d = diags.fragment(key, whereClauses.get(kind).keySet());
                  d = new JCDiagnostic.MultilineDiagnostic(d, lines.reverse());
                  clauses = clauses.prepend(d);
              }
          }
          return clauses.reverse();
      }
docs: Build a list of multiline diagnostics containing detailed info about
  type-variables, captured types, and intersection types
  
  @return where clause list