public void processElement(CElementPropertyInfo property, ClassOutline classOutline, Outline model) {
		XSComponent schemaComponent = property.getSchemaComponent();
		ParticleImpl particle = (ParticleImpl) schemaComponent;
		// must be reflection because of cxf-codegen
		int maxOccurs = toInt(Utils.getField("maxOccurs", particle));
		int minOccurs = toInt(Utils.getField("minOccurs", particle));
		boolean nillable = toBoolean(Utils.getField("nillable",particle.getTerm())); 
		JFieldVar field = classOutline.implClass.fields().get(propertyName(property));

		// workaround for choices
		boolean required = property.isRequired();
		if (minOccurs < 0 || minOccurs >= 1 && required && !nillable) {
			if (!hasAnnotation(field, NotNull.class)) {
				processNotNull(classOutline, field);
			}
		}
		if (maxOccurs > 1) {
			if (!hasAnnotation(field, Size.class)) {
				log("@Size (" + minOccurs + "," + maxOccurs + ") " + propertyName(property)
						+ " added to class " + classOutline.implClass.name());

				field.annotate(Size.class).param("min", minOccurs).param("max", maxOccurs);
			}
		}
		if (maxOccurs == -1 && minOccurs > 0) { // maxOccurs="unbounded"
			if (!hasAnnotation(field, Size.class)) {
				log("@Size (" + minOccurs + ") " + propertyName(property) + " added to class "
						+ classOutline.implClass.name());
				field.annotate(Size.class).param("min", minOccurs);
			}
		}

		XSTerm term = particle.getTerm();
		if (term instanceof ElementDecl) {
			processElement(property, classOutline, field, (ElementDecl) term);
		} else if (term instanceof DelayedRef.Element) {
			XSElementDecl xsElementDecl = ((DelayedRef.Element) term).get();
			processElement(property, classOutline, field, (ElementDecl) xsElementDecl);
		}

	}
public void processElement ( CElementPropertyInfo property , ClassOutline classOutline , Outline model ) { XSComponent schemaComponent = property . getSchemaComponent ( ) ; ParticleImpl particle = ( ParticleImpl ) schemaComponent ; int maxOccurs = toInt ( Utils . getField ( "maxOccurs" , particle ) ) ; int minOccurs = toInt ( Utils . getField ( "minOccurs" , particle ) ) ; boolean nillable = toBoolean ( Utils . getField ( "nillable" , particle . getTerm ( ) ) ) ; JFieldVar field = classOutline . implClass . fields ( ) . get ( propertyName ( property ) ) ; boolean required = property . isRequired ( ) ; if ( minOccurs < 0 || minOccurs >= 1 && required && ! nillable ) { if ( ! hasAnnotation ( field , NotNull . class ) ) { processNotNull ( classOutline , field ) ; } } if ( maxOccurs > 1 ) { if ( ! hasAnnotation ( field , Size . class ) ) { log ( "@Size (" + minOccurs + "," + maxOccurs + ") " + propertyName ( property ) + " added to class " + classOutline . implClass . name ( ) ) ; field . annotate ( Size . class ) . param ( "min" , minOccurs ) . param ( "max" , maxOccurs ) ; } } if ( maxOccurs == - 1 && minOccurs > 0 ) { if ( ! hasAnnotation ( field , Size . class ) ) { log ( "@Size (" + minOccurs + ") " + propertyName ( property ) + " added to class " + classOutline . implClass . name ( ) ) ; field . annotate ( Size . class ) . param ( "min" , minOccurs ) ; } } XSTerm term = particle . getTerm ( ) ; if ( term instanceof ElementDecl ) { processElement ( property , classOutline , field , ( ElementDecl ) term ) ; } else if ( term instanceof DelayedRef . Element ) { XSElementDecl xsElementDecl = ( ( DelayedRef . Element ) term ) . get ( ) ; processElement ( property , classOutline , field , ( ElementDecl ) xsElementDecl ) ; } }
XS:Element