docs: static BootstrapText resolveMarkdown(Context context, String markdown, boolean editMode) {
          if (markdown == null) {
              return null;
          }
          else { // detect {fa_*} and split into spannable, ignore escaped chars
              BootstrapText.Builder builder = new BootstrapText.Builder(context, editMode);
  
              int lastAddedIndex = 0;
              int startIndex = -1;
              int endIndex = -1;
  
              for (int i = 0; i < markdown.length(); i++) {
                  char c = markdown.charAt(i);
  
                  if (c == '\\') { // escape sequence, ignore next char
                      i += 2;
                      continue;
                  }
  
                  if (c == '{') {
                      startIndex = i;
                  }
                  else if (c == '}') {
                      endIndex = i;
                  }
  
                  if (startIndex != -1 && endIndex != -1) { // recognised markdown string
  
                      if (startIndex >= 0 && endIndex < markdown.length()) {
                          String iconCode = markdown.substring(startIndex + 1, endIndex).replaceAll("\\-", "_");
                          builder.addText(markdown.substring(lastAddedIndex, startIndex));
  
                          if (iconCode.matches(REGEX_FONT_AWESOME)) { // text is FontAwesome code
                              if (editMode) {
                                  builder.addText("?");
                              }
                              else {
                                  builder.addIcon(iconCode, retrieveRegisteredIconSet(FontAwesome.FONT_PATH, false));
                              }
                          }
                          else if (iconCode.matches(REGEX_TYPICONS)) {
                              if (editMode) {
                                  builder.addText("?");
                              }
                              else {
                                  builder.addIcon(iconCode, retrieveRegisteredIconSet(Typicon.FONT_PATH, false));
                              }
                          }
                          else if(iconCode.matches(REGEX_MATERIAL_ICONS)){
                              if (editMode) {
                                  builder.addText("?");
                              }
                              else {
                                  builder.addIcon(iconCode, retrieveRegisteredIconSet(MaterialIcons.FONT_PATH, false));
                              }
                          }
                          else {
                              if (editMode) {
                                  builder.addText("?");
                              }
                              else {
                                  builder.addIcon(iconCode, resolveIconSet(iconCode));
                              }
                          }
                          lastAddedIndex = endIndex + 1;
                      }
                      startIndex = -1;
                      endIndex = -1;
                  }
              }
              return builder.addText(markdown.substring(lastAddedIndex, markdown.length())).build();
          }
      }