code: public boolean process(Context context) throws NestingException {
          Source source = context.getSource();
  
          int count = 0;
          while (source.hasNext() &&
                  (strong || context.hasNextAdjustedForTerminator()) &&
                  (max < 0 || count < max)) {
              int offset = source.getOffset();
              boolean parsed = false;
  
              if ((source.nextMayBeConstant() || hasCrazyCode) && !context.checkBadTag(offset)) {
                  boolean suspicious = false;
  
                  for (ProcCode code : cachedCodes) {
                      if (code.suspicious(context)) {
                          suspicious = true;
                          if (code.process(context)) {
                              parsed = true;
                              break;
                          }
                      }
                  }
  
                  if (suspicious && !parsed && !hasCheck) {
                      context.addBadTag(offset);
                  }
              }
  
              if (!parsed) {
                  if (strong) {
                      // If scope is strong and has not a code from scope then stop the scope processing
                      break;
                  } else if (ignoreText) {
                      source.incOffset();
                  } else {
                      try {
                          context.getTarget().append(source.next());
                      } catch (IOException e) {
                          // Nothing! Because StringBuilder doesn't catch IOException
                      }
                  }
              } else {
                  count++;
              }
          }
  
          return min < 0 || count >= min;
      }
docs: Парсит тект с BB-кодами
  
  @param context the parsing context
  @return true if parsing is success. False otherwise, If count of codes in text is not enough, for example.
  @throws NestingException if nesting is too big.