docs: public Problems validate() {
          if (problems == null) {
              SimpleProblems problems = new SimpleProblems();
              warnUseOfDeprecatedFields(problems);
              Results results = SCHEMA_LIBRARY.validate(doc, JSON_SCHEMA_URI);
              for (Problem problem : results) {
                  switch (problem.getType()) {
                      case ERROR:
                          problems.addError(JcrI18n.configurationError, problem.getPath(), problem.getReason());
                          break;
                      case WARNING:
                          problems.addWarning(JcrI18n.configurationWarning, problem.getPath(), problem.getReason());
                          break;
                  }
              }
              // Validate the components ...
              getSecurity().validateCustomProviders(problems);
              getSequencing().validateSequencers(problems);
              getTextExtraction().validateTextExtractors(problems);
              validateIndexProviders(problems);
              getIndexes().validateIndexDefinitions(problems);
              this.problems = problems;
          }
          return problems;
      }