* @param style
   * @param maxdepth
   * @param summaryP
   * @param stream
   */
  public static void explainWhynot(String label, Keyword style, int maxdepth, boolean summaryP, OutputStream stream) {
    if (label == null) {
      Native.setSpecial(Logic.$MOST_RECENT_EXPLANATION_MAPPING$, KeyValueList.newKeyValueList());
    }
    try {
      { Cons mappings = Stella.NIL;

        { Justification justification = null;
          Cons iter000 = QueryIterator.getWhynotJustifications(Logic.$MOST_RECENT_QUERY$, label, ((KeyValueList)(Logic.$MOST_RECENT_EXPLANATION_MAPPING$.get()))).theConsList;
          int i = Stella.NULL_INTEGER;
          int iter001 = 1;

          for (;!(iter000 == Stella.NIL); iter000 = iter000.rest, iter001 = iter001 + 1) {
            justification = ((Justification)(iter000.value));
            i = iter001;
            if (label == null) {
              { ExplanationInfo info = Justification.registerJustification(Justification.visibleJustification(justification), ((KeyValueList)(Logic.$MOST_RECENT_EXPLANATION_MAPPING$.get())));

                info.label = Native.integerToString(((long)(i)));
                info.depth = 1;
              }
            }
            {
              stream.nativeStream.println();
              stream.nativeStream.println("Explanation #" + i + " score=" + justification.positiveScore + ":");
              stream.nativeStream.println();
            }
;
            Justification.printWhynotJustification(justification, stream, maxdepth, style, summaryP);
            if (label == null) {
              mappings = Cons.cons(((KeyValueList)(Logic.$MOST_RECENT_EXPLANATION_MAPPING$.get())), mappings);
              Native.setSpecial(Logic.$MOST_RECENT_EXPLANATION_MAPPING$, KeyValueList.newKeyValueList());
            }
          }
        }
        if (!(mappings == Stella.NIL)) {
          Native.setSpecial(Logic.$MOST_RECENT_EXPLANATION_MAPPING$, KeyValueList.newKeyValueList());
          { KeyValueList mapping = null;
            Cons iter002 = mappings;

            for (;!(iter002 == Stella.NIL); iter002 = iter002.rest) {
              mapping = ((KeyValueList)(iter002.value));
              { Justification k = null;
                ExplanationInfo v = null;
                KvCons iter003 = mapping.theKvList;

                for (;iter003 != null; iter003 = iter003.rest) {
                  k = ((Justification)(iter003.key));
                  v = ((ExplanationInfo)(iter003.value));
                  ((KeyValueList)(Logic.$MOST_RECENT_EXPLANATION_MAPPING$.get())).insertAt(k, v);
                }
              }
            }
          }
        }
      }
    } catch (ExplainException ee) {
      System.out.print(Stella.exceptionMessage(ee));
    }
  }