docs: public boolean run(final Outline model, final Options opt, final ErrorHandler errorHandler) {
  
  	    	
  //            CPluginCustomization c = co.target.getCustomizations().find(NS,"code");
  //            if(c==null)
  //                continue;   // no customization --- nothing to inject here
  
  //            c.markAsAcknowledged();
              // TODO: ideally you should validate this DOM element to make sure
              // that there's no typo/etc. JAXP 1.3 can do this very easily.
  //            String codeFragment = DOMUtils.getElementText(c.element);
  
              // inject the specified code fragment into the implementation class.
  //            co.implClass.direct("private ValidationEngineFactory m_validationEngineFactory = ValidationEngineFactory.getInstance();");
  	    	//JClass validationEngineFactoryClass=model.getCodeModel().ref(nz.co.senanque.validationengine.ValidationEngineFactory.class);
              //final JClass validationEngineClass=model.getCodeModel().ref(nz.co.senanque.validationengine.ValidationEngine.class);
              final JClass listeningArrayClass=model.getCodeModel().ref(ListeningArray.class);
              final JClass ObjectMetadataClass=model.getCodeModel().ref(nz.co.senanque.validationengine.ObjectMetadata.class);
  //            final JClass ValidationSessionClass=model.getCodeModel().ref(nz.co.senanque.validationengine.ValidationSession.class);
              final JClass ValidationUtilsClass=model.getCodeModel().ref(nz.co.senanque.validationengine.ValidationUtils.class);
              final JClass businessObjectInterface=model.getCodeModel().ref(nz.co.senanque.validationengine.ValidationObject.class);
  //            final JType[] jTypes = JTypeUtils.getBasicTypes(model.getCodeModel());
              @SuppressWarnings("unchecked")
  			Collection<ClassOutline> allClasses = (Collection<ClassOutline>) model.getClasses();
              for( ClassOutline co : model.getClasses() ) 
              {
                  ClassOutline extendingClass = co.getSuperClass();
                  boolean notExtends = (extendingClass == null);
                  if (notExtends)
                  {
                      processClass(co, allClasses, listeningArrayClass, model, ObjectMetadataClass, businessObjectInterface,notExtends,ValidationUtilsClass);
                  }
              }
              for( ClassOutline co : model.getClasses() ) 
              {
                  ClassOutline extendingClass = co.getSuperClass();
                  boolean notExtends = (extendingClass == null);
                  if (!notExtends)
                  {
                      processClass(co, allClasses, listeningArrayClass, model, ObjectMetadataClass, businessObjectInterface,notExtends,ValidationUtilsClass);
                  }
              }
  
  	        return true;
  	    }