code: @Override
  	public void execute() throws BuildException {
  		if (null != this.echo) {
  			out.emitText(echo);
  		}
  		validateAttributes();
  
  		StatisticProvidingMixinGenerator generator = makeInterfaceItGenerator();
  
  		try {
  			if (debug) {
  				out.emitText(this.toString());
  			}
  
  			if (null == this.targetInterfaceParentName || targetInterfaceParentName.trim().length() < 1) {
  				File wroteFile = generator.generateMixinJavaFile(getOutputDirectory(), getTargetInterfaceName(),
  						getDelegateClassObject(), getTargetPackageName(), makeArgumentNameSource());
  
  				GenerationStatistics stats = generator.getStatistics();
  				emitGenerationResult(wroteFile, stats);
  			} else {
  				final Class<?> delegateClassObject = this.getDelegateClassObject();
  				final Class<?> superclass = delegateClassObject.getSuperclass();
  				if(null == superclass || java.lang.Object.class.equals(superclass)) {
  					out.emitText("Execution halted without generation. The attribute 'targetInterfaceParentName' should be empty if the delegate class has no superclass other than Object.");
  					return;
  				}
  				MultiFileOutputOptions options = new OptionsForSplittingChildAndParent(this.targetPackageName,
  						getOutputDirectory(), this.targetInterfaceName, this.targetInterfaceParentName,
  						delegateClassObject);
  				List<File> results = generator.generateMixinJavaFiles(options, makeArgumentNameSource(),
  						delegateClassObject, superclass);
  				for (File result : results) {
  					emitGenerationResult(result,
  							generator.getStatisticsFor(result.getName()).orElse(generator.getStatistics()));
  				}
  			}
  		} catch (IOException e) {
  			handleIOException(e);
  		} catch (ClassNotFoundException e) {
  			handleClassNotFound(e);
  		} catch (Throwable t) {
  			handleUnexpectedError(t);
  		}
  	}
docs: /*
  (non-Javadoc)
  
  @see org.apache.tools.ant.Task#execute()