code: private ProcessedInput parseSqlString(String preProcessedSql, ProcessedInput processedInput) {
          ProcessedInput resultProcessedInput = new ProcessedInput(processedInput);
  
          String originalSql = resultProcessedInput.getOriginalSql();
          StringBuilder parsedSql = new StringBuilder(preProcessedSql.length());
  
          Pattern regexPattern = null;
          Matcher regexMatcher = null;
  
          regexPattern = Pattern.compile(getRegexParameterSearch(), Pattern.CASE_INSENSITIVE);
  
          // adding whitespace, as parameter might be in the end of the string, but regex is checking for separator on both ends of parameter.
          regexMatcher = regexPattern.matcher(preProcessedSql + " ");
  
          int paramStart = 0;
          int paramEnd = 0;
          int prevParamEnd = 0;
          String paramName = null;
  
          while (regexMatcher.find() == true) {
              paramStart = regexMatcher.start() + 1;
              paramEnd = regexMatcher.end();
              paramName = getParameterName(preProcessedSql, paramStart, paramEnd);
  
              parsedSql.append(originalSql.substring(prevParamEnd, paramStart));
  
              parsedSql.append(SQL_PARAMETER);
  
              addParameter(resultProcessedInput, paramName, paramStart, paramEnd);
  
              prevParamEnd = paramEnd;
          }
  
          parsedSql.append(originalSql.substring(prevParamEnd, preProcessedSql.length()));
  
          resultProcessedInput.setParsedSql(parsedSql.toString());
  
          return resultProcessedInput;
      }
docs: Performs actual input SQL/parameters processing
  Used by {@link #processInput(String, java.util.Map)}
  
  @param preProcessedSql SQL string with removed blocks (comments etc.)
  @param processedInput  Processed Input object which would be filled
  @return filled ProcessedInput object