code: public static FieldAnalyzer findAnalyzer(String analyzerName) {
          Utils.require(!Utils.isEmpty(analyzerName), "analyzerName");
          
          // See if full package name was given.
          if (analyzerName.indexOf('.') < 0) {
              // Prepend default package name and, if needed, append "Analyzer".
              analyzerName = DEFAULT_ANALYZER_PACKAGE + analyzerName;
              if (!analyzerName.endsWith("Analyzer")) {
                  analyzerName += "Analyzer";
              }
          }
          
          // Try the analyzer cache first.
          FieldAnalyzer fieldAnalyzer = g_analyzerCache.get(analyzerName);
          if (fieldAnalyzer != null) {
              return fieldAnalyzer;
          }
          
          // Analyzer not in the cache.
          try {
              // Attempt to load the corresponding class. This throws if the class cannot be found.
              @SuppressWarnings("unchecked")
              Class<FieldAnalyzer> analyzerClass = (Class<FieldAnalyzer>)Class.forName(analyzerName);
              
              // Attempt to find the "instance" static method. This also throws if not found.
              Method instanceMethod = analyzerClass.getMethod(INSTANCE_METHOD_NAME);
              
              // Attempt to invoke the instance method, which should return an instance of the
              // FieldAnalyzer we want. Since we expect it to be static, we pass null for the
              // "object" parameter. We also expect it to have no parameters, so we pass none.
              fieldAnalyzer = (FieldAnalyzer)instanceMethod.invoke(null);
              
              // Here, found it. Add to cache and return it.
              g_analyzerCache.put(analyzerName, fieldAnalyzer);   // OK if duplicate
              return fieldAnalyzer;
          } catch (Exception e) {
              // Didn't find the class or method we were looking for.
              throw new IllegalArgumentException("Analyzer not found: " + analyzerName);
          }
      }
docs: Return the singleton instance of the {@link FieldAnalyzer} class for the given
  analyzer name. If the given analyzer name does not contain a package path, the
  default {@value #DEFAULT_ANALYZER_PACKAGE} is prepended to it. If no analyzer with
  the given name can be found, an IllegalArgumentException is thrown.
  
  @param analyzerName  Name of a field analyzer (e.g. "NullAnalyzer").
  @return              Singleton analyzer object.