docs: public static String getNaturalName(String name) {
          name = getShortName(name);
  
          if (isBlank(name)) {
              return name;
          }
  
          if (name.length() == 1) {
              return name.toUpperCase();
          } else {
              StringBuilder sb = new StringBuilder();
              sb.append(name.charAt(name.length() - 1));
              //Traversing the string in reverse order
              for (int i = name.length() - 2; i > 0; i--) {
                  char currChar = name.charAt(i);
                  char prevChar = name.charAt(i - 1);
                  char nextChar = name.charAt(i + 1);
  
                  boolean isCurrentCharLowerCase = Character.isLowerCase(currChar);
                  boolean isPrevCharLowerCase = Character.isLowerCase(prevChar);
                  boolean isNextCharLowerCase = Character.isLowerCase(nextChar);
  
                  if (isCurrentCharLowerCase != isPrevCharLowerCase && !isCurrentCharLowerCase) {
                      sb.append(currChar + " ");
                  } else if (isCurrentCharLowerCase == isPrevCharLowerCase && !isCurrentCharLowerCase && isNextCharLowerCase) {
                      sb.append(currChar + " ");
                  } else {
                      sb.append(currChar);
                  }
              }
              //The first character of the string is always in Upper case
              sb.append(Character.toUpperCase(name.charAt(0)));
              return sb.reverse().toString();
          }
      }