code: public ProcessedInput processInput(String query, Map<String, Object> params) {
          ProcessedInput processedInput = getProcessedInputsFromCache(query);
          String parsedSql = null;
  
          if (processedInput.getParsedSql() == null) {
              processedInput = processSqlStatement(query);
  
              parsedSql = generateParsedSql(processedInput);
              processedInput.setParsedSql(parsedSql);
  
              putProcessedInputToCache(processedInput);
          }
  
          AssertUtils.assertNotNull(processedInput.getParsedSql());
          AssertUtils.assertNotNull(processedInput.getSqlParameterNames());
  
          // set sql parameter values if not null
          if (params != null) {
              processedInput.fillParameterValues(params);
          }
  
          return processedInput;
      }
docs: {@inheritDoc}