/** Free resources related to annotation processing. */
 public void close() {
   filer.close();
   if (discoveredProcs != null) // Make calling close idempotent
   discoveredProcs.close();
   discoveredProcs = null;
   if (processorClassLoader != null && processorClassLoader instanceof Closeable) {
     try {
       ((Closeable) processorClassLoader).close();
     } catch (IOException e) {
       JCDiagnostic msg = diags.fragment("fatal.err.cant.close.loader");
       throw new FatalError(msg, e);
     }
   }
 }