code: static InstallException create(Exception e) {
          if (e instanceof ProductInfoParseException) {
              ProductInfoParseException pipe = (ProductInfoParseException) e;
              String missingKey = pipe.getMissingKey();
              if (missingKey != null) {
                  return create(Messages.UTILITY_MESSAGES.getLogMessage("version.missing.key", missingKey, pipe.getFile().getAbsoluteFile()));
              }
              return create(Messages.UTILITY_MESSAGES.getLogMessage("ERROR_UNABLE_READ_FILE", pipe.getFile().getAbsoluteFile(),
                                                                    pipe.getCause().getMessage()));
          }
          if (e instanceof DuplicateProductInfoException) {
              DuplicateProductInfoException dpie = (DuplicateProductInfoException) e;
              return create(Messages.UTILITY_MESSAGES.getLogMessage("version.duplicated.productId", ProductInfo.COM_IBM_WEBSPHERE_PRODUCTID_KEY,
                                                                    dpie.getProductInfo1().getFile().getAbsoluteFile(),
                                                                    dpie.getProductInfo2().getFile().getAbsoluteFile()));
          }
          if (e instanceof ProductInfoReplaceException) {
              ProductInfoReplaceException pire = (ProductInfoReplaceException) e;
              ProductInfo productInfo = pire.getProductInfo();
              String replacesId = productInfo.getReplacesId();
              if (replacesId.equals(productInfo.getId())) {
                  return create(Messages.UTILITY_MESSAGES.getLogMessage("version.replaced.product.can.not.itself", productInfo.getFile().getAbsoluteFile()));
              }
              return create(Messages.UTILITY_MESSAGES.getLogMessage("version.replaced.product.not.exist", replacesId,
                                                                    productInfo.getFile().getAbsoluteFile()));
          }
          if (e instanceof RepositoryBackendIOException) {
              return create((RepositoryException) e, new Throwable(e), (RestRepositoryConnectionProxy) null, true);
          }
          return create(e.getMessage(), e, InstallException.RUNTIME_EXCEPTION);
      }
docs: Create an install exception from an existing exception
  
  @param e
  @return