code: @GwtIncompatible("incompatible method")
      public static String[] getRootCauseStackTrace(final Throwable throwable) {
          if (throwable == null) {
              return ArrayUtils.EMPTY_STRING_ARRAY;
          }
          final Throwable throwables[] = getThrowables(throwable);
          final int count = throwables.length;
          final List<String> frames = new ArrayList<>();
          List<String> nextTrace = getStackFrameList(throwables[count - 1]);
          for (int i = count; --i >= 0;) {
              final List<String> trace = nextTrace;
              if (i != 0) {
                  nextTrace = getStackFrameList(throwables[i - 1]);
                  removeCommonFrames(trace, nextTrace);
              }
              if (i == count - 1) {
                  frames.add(throwables[i].toString());
              } else {
                  frames.add(WRAPPED_MARKER + throwables[i].toString());
              }
              frames.addAll(trace);
          }
          return frames.toArray(new String[frames.size()]);
      }
docs: <p>Creates a compact stack trace for the root cause of the supplied
  <code>Throwable</code>.</p>
  
  <p>The output of this method is consistent across JDK versions.
  It consists of the root exception followed by each of its wrapping
  exceptions separated by '[wrapped]'. Note that this is the opposite
  order to the JDK1.4 display.</p>
  
  @param throwable  the throwable to examine, may be null
  @return an array of stack trace frames, never null
  @since 2.0