code: public synchronized void init(ProcessingEnvironment processingEnv) {
          if (initialized)
              throw new IllegalStateException("Cannot call init more than once.");
          Objects.requireNonNull(processingEnv, "Tool provided null ProcessingEnvironment");
  
          this.processingEnv = processingEnv;
          initialized = true;
      }
docs: Initializes the processor with the processing environment by
  setting the {@code processingEnv} field to the value of the
  {@code processingEnv} argument.  An {@code
  IllegalStateException} will be thrown if this method is called
  more than once on the same object.
  
  @param processingEnv environment to access facilities the tool framework
  provides to the processor
  @throws IllegalStateException if this method is called more than once.