VM._assert(System.err != null);
if (VM.VerifyAssertions) VM._assert(System.err != null);
  public void printStackTrace () {    // boolean useSysWrite = false;    // My intent here in overriding this WAS to avoid stack trace hell, but    // it only seems to have gotten worse.    // boolean useSysWrite = true || VM.stackTraceVMSysWrite;    boolean useSysWrite = VM.stackTraceVMSysWrite;    if (!useSysWrite) {      if (this instanceof OutOfMemoryError) {	tallyOutOfMemoryError();	VM.sysWriteln("Throwable.printStackTrace(): We are trying to dump the stack of an OutOfMemoryError.");	VM.sysWriteln("Throwable.printStackTrace():  We'll use the VM.sysWriteln() function,");	VM.sysWriteln("Throwable.printStackTrace():  instead of the System.err stream, to avoid trouble.");	useSysWrite = true;      } else if (System.err == null) {	VM.sysWriteln("Throwable.printStackTrace(): Can't write to the uninitialized System.err stream;");	VM.sysWriteln("Throwable.printStackTrace():  it's early in booting.  Reverting to VM.sysWriteln().");	useSysWrite = true;      }    }    if (useSysWrite) {      sysWriteStackTrace();    } else { // Not using sysWrite      VM._assert(System.err != null);      // We will catch other exceptions deeper down the call stack.      printStackTrace(System.err);    }  }