docs: static String nextMappingGroup(final String mappingGroup) {
          if (mappingGroup == null || "".equals(mappingGroup)) return "A";
  
          final char[] cs = mappingGroup.toCharArray();
          boolean incrementFurther = true;
  
          // step through the array backwards
          for (int i = cs.length - 1; i >= 0; i--) {
              // if we should no longer increment then break out of the loop
              if (!incrementFurther) break;
  
              // continue incrementing backwards through the array as long as we are finding Z's
              if (++cs[i] > 'Z') cs[i] = 'A';
              else incrementFurther = false;
          }
          final String result = new String(cs);
          // if the first char of the array was a Z then we have a 'carry' operation and need to add another A at the end
          if (incrementFurther) return result + "A";
          else return result;
      }