@SuppressWarnings("ThrowableResultOfMethodCallIgnored")
 @Nullable
 private static String extractDetails(@NotNull Throwable e) {
   final Throwable unwrapped = RemoteUtil.unwrap(e);
   if (unwrapped instanceof GradleApiException) {
     return ((GradleApiException) unwrapped).getOriginalReason();
   }
   return null;
 }
 /**
  * {@link RemoteUtil#unwrap(Throwable) unwraps} given exception if possible and builds error
  * message for it.
  *
  * @param e exception to process
  * @return error message for the given exception
  */
 @SuppressWarnings({"ThrowableResultOfMethodCallIgnored", "IOResourceOpenedButNotSafelyClosed"})
 @NotNull
 public static String buildErrorMessage(@NotNull Throwable e) {
   Throwable unwrapped = RemoteUtil.unwrap(e);
   String reason = unwrapped.getLocalizedMessage();
   if (!StringUtil.isEmpty(reason)) {
     return reason;
   } else if (unwrapped.getClass() == GradleApiException.class) {
     return String.format(
         "gradle api threw an exception: %s",
         ((GradleApiException) unwrapped).getOriginalReason());
   } else {
     StringWriter writer = new StringWriter();
     unwrapped.printStackTrace(new PrintWriter(writer));
     return writer.toString();
   }
 }