docs: public static RestRepositoryConnectionProxy getProxyInfo(Properties repoProperties) throws InstallException {
          RestRepositoryConnectionProxy proxyInfo = null;
          URL proxyURL = null;
          if (repoProperties != null) {
              //Retrieve proxy settings properties
              String proxyHost = repoProperties.getProperty(InstallConstants.REPO_PROPERTIES_PROXY_HOST);
              String proxyPort = repoProperties.getProperty(InstallConstants.REPO_PROPERTIES_PROXY_PORT);
              String proxyUser = getProxyUser(repoProperties);
              String proxyPwd = getProxyPwd(repoProperties);
              try {
                  //Construct proxy URL object from proxy host and port
                  if ((proxyHost != null && !proxyHost.isEmpty()) && (proxyPort != null && !proxyPort.isEmpty())) {
                      //Trim any trailing whitespaces
                      proxyHost = proxyHost.trim();
                      proxyPort = proxyPort.trim();
                      logger.log(Level.FINEST, "proxyHost: " + proxyHost);
                      logger.log(Level.FINEST, "proxyPort: " + proxyPort);
                      logger.log(Level.FINEST, "proxyUser: " + proxyUser);
                      logger.log(Level.FINEST, "proxyPassword: ********");
                      if (proxyHost.toLowerCase().startsWith("http://"))
                          proxyURL = new URL(proxyHost + ":" + proxyPort);
                      else
                          proxyURL = new URL("http://" + proxyHost + ":" + proxyPort);
                      //Check proxy port number in range
                      if (proxyURL.getPort() < 0 || proxyURL.getPort() > 0xFFFF)
                          throw new InstallException(Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("ERROR_TOOL_INVALID_PROXY_PORT", String.valueOf(proxyURL.getPort())));
                  } else {
                      if ((proxyHost == null || proxyHost.isEmpty()) && proxyPort != null) {
                          throw new InstallException(Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("ERROR_TOOL_PROXY_HOST_MISSING"), InstallException.MISSING_CONTENT);
                      } else if (proxyHost != null && (proxyPort == null || proxyPort.isEmpty())) {
                          throw new InstallException(Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("ERROR_TOOL_PROXY_PORT_MISSING"), InstallException.MISSING_CONTENT);
                      }
                  }
              } catch (MalformedURLException e) {
                  throw new InstallException(Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("ERROR_TOOL_INVALID_PROXY_PORT", proxyPort), e, InstallException.RUNTIME_EXCEPTION);
              }
              if (proxyURL != null) {
                  if ((proxyUser != null && !proxyUser.isEmpty()) && (proxyPwd != null && !proxyPwd.isEmpty())) {
                      //Trim any trailing whitespaces
                      proxyUser = proxyUser.trim();
                      proxyPwd = proxyPwd.trim();
                      String decodedPwd = proxyPwd;
                      try {
                          //Decode encrypted proxy server password
                          decodedPwd = PasswordUtil.decode(proxyPwd);
                          //Check proxy server credentials for Authentication
                          setProxyAuthenticator(proxyHost, proxyPort, proxyUser, decodedPwd);
                      } catch (InvalidPasswordDecodingException ipde) {
                          decodedPwd = proxyPwd;
                          logger.log(Level.FINE, Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("LOG_PASSWORD_NOT_ENCODED_PROXY", proxyURL) + InstallUtils.NEWLINE);
                          setProxyAuthenticator(proxyHost, proxyPort, proxyUser, decodedPwd);
                      } catch (UnsupportedCryptoAlgorithmException ucae) {
                          throw new InstallException(Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("ERROR_TOOL_PROXY_PWD_CRYPTO_UNSUPPORTED"), ucae, InstallException.RUNTIME_EXCEPTION);
                      }
                  }
  
                  try {
                      proxyInfo = new RestRepositoryConnectionProxy(proxyURL);
                  } catch (RepositoryException e) {
                      StringWriter sw = new StringWriter();
                      PrintWriter pw = new PrintWriter(sw);
                      e.printStackTrace(pw);
                      if (sw.toString().contains("com.ibm.websphere.ssl.protocol.SSLSocketFactory"))
                          throw new InstallException(Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("ERROR_FAILED_TO_CONNECT_JDK_WRONG"), e, InstallException.RUNTIME_EXCEPTION);
                      else
                          throw new InstallException(Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("ERROR_FAILED_TO_CONNECT"), e, InstallException.RUNTIME_EXCEPTION);
                  }
  
              }
          }
          return proxyInfo;
      }