code: @Deprecated
      @GwtIncompatible("incompatible method")
      public static Throwable getCause(final Throwable throwable, String[] methodNames) {
          if (throwable == null) {
              return null;
          }
  
          if (methodNames == null) {
              final Throwable cause = throwable.getCause();
              if (cause != null) {
                  return cause;
              }
  
              methodNames = CAUSE_METHOD_NAMES;
          }
  
          for (final String methodName : methodNames) {
              if (methodName != null) {
                  final Throwable legacyCause = getCauseUsingMethodName(throwable, methodName);
                  if (legacyCause != null) {
                      return legacyCause;
                  }
              }
          }
  
          return null;
      }
docs: <p>Introspects the <code>Throwable</code> to obtain the cause.</p>
  
  <p>A <code>null</code> set of method names means use the default set.
  A <code>null</code> in the set of method names will be ignored.</p>
  
  @param throwable  the throwable to introspect for a cause, may be null
  @param methodNames  the method names, null treated as default set
  @return the cause of the <code>Throwable</code>,
  <code>null</code> if none found or null throwable input
  @since 1.0
  @deprecated This feature will be removed in Lang 4.0, use {@link Throwable#getCause} instead