code: @SuppressWarnings("unchecked")
      @NotNull
      public final Parser<Object> getParser() {
          if (parser != null) {
              return parser;
          }
          LOG.info("Creating parser: {}", className);
          if (className == null) {
              throw new IllegalStateException("Class name was not set: " + getName());
          }
          if (context == null) {
              throw new IllegalStateException("Context class loader was not set: " + getName() + " / " + className);
          }
          final Object obj = Utils4J.createInstance(className, context.getClassLoader());
          if (!(obj instanceof Parser<?>)) {
              throw new IllegalStateException("Expected class to be of type '" + Parser.class.getName() + "', but was: " + className);
          }
          parser = (Parser<Object>) obj;
          parser.initialize(context, this);
          return parser;
      }
docs: Returns an existing parser instance or creates a new one if it's the first call to this method.
  
  @return Parser of type {@link #className}.