/**
  * Register member (nested) classes that happen to be configuration classes themselves.
  *
  * @param sourceClass the source class to process
  * @throws IOException if there is any problem reading metadata from a member class
  */
 private void processMemberClasses(ConfigurationClass configClass, SourceClass sourceClass)
     throws IOException {
   for (SourceClass memberClass : sourceClass.getMemberClasses()) {
     if (ConfigurationClassUtils.isConfigurationCandidate(memberClass.getMetadata())
         && !memberClass
             .getMetadata()
             .getClassName()
             .equals(configClass.getMetadata().getClassName())) {
       if (this.importStack.contains(configClass)) {
         this.problemReporter.error(new CircularImportProblem(configClass, this.importStack));
       } else {
         this.importStack.push(configClass);
         try {
           processConfigurationClass(memberClass.asConfigClass(configClass));
         } finally {
           this.importStack.pop();
         }
       }
     }
   }
 }