code: @Override
      public <T> StAXProcessor<T> forClass(final Class<T> clazz) {
          final StAXProcessor<T> processor = (StAXProcessor<T>) processors.get(clazz);
  
          if (processor != null) {
              return processor;
          } else {
              final Class<?>[] classes = clazz.getClasses();
  
              StAXProcessor<T> newProcessor = null;
  
              for (final Class<?> innerClass : classes) {
                  if (innerClass.getAnnotation(IdolBuilder.class) != null) {
                      if (Modifier.isStatic(innerClass.getModifiers())) {
                          newProcessor = new IdolAnnotationsBuilderProcessor<>(clazz, innerClass, this);
                      } else {
                          LOGGER.warn("{} designated as IdolBuilder but is not static so the annotation has no effect.", innerClass.getCanonicalName());
                      }
                  }
              }
  
              if (newProcessor == null) {
                  newProcessor = new IdolAnnotationsProcessor<>(clazz, conversionService, properties.get(), this);
              }
  
              processors.putIfAbsent(clazz, newProcessor);
              return newProcessor;
          }
      }
docs: {@inheritDoc}