public CMElementsPropertyInfo(
     MPropertyInfoOrigin origin,
     MClassInfo<T, C> classInfo,
     String privateName,
     boolean collection,
     boolean required,
     Collection<MElementTypeInfo<T, C>> elementTypeInfos,
     QName wrapperElementName) {
   super(origin, classInfo, privateName, collection, required);
   Validate.noNullElements(elementTypeInfos);
   Validate.notEmpty(elementTypeInfos);
   Validate.isTrue(elementTypeInfos.size() > 1);
   this.elementTypeInfos.addAll(elementTypeInfos);
   this.wrapperElementName = wrapperElementName;
 }
 public CMElementRefsPropertyInfo(
     MPropertyInfoOrigin origin,
     MClassInfo<T, C> classInfo,
     String privateName,
     boolean collection,
     boolean required,
     Collection<MElement<T, C>> elementTypeInfos,
     QName wrapperElementName,
     boolean mixed,
     boolean domAllowed,
     boolean typedObjectAllowed) {
   super(origin, classInfo, privateName, collection, required);
   Validate.noNullElements(elementTypeInfos);
   // Validate.notEmpty(elementTypeInfos);
   // Validate.isTrue(elementTypeInfos.size() > 1);
   this.elementTypeInfos.addAll(elementTypeInfos);
   this.wrapperElementName = wrapperElementName;
   this.mixed = mixed;
   this.domAllowed = domAllowed;
   this.typedObjectAllowed = typedObjectAllowed;
 }
 public CMWildcardTypeInfo(MWildcardTypeInfoOrigin origin, T targetType) {
   Validate.notNull(origin);
   this.origin = origin;
   this.targetType = targetType;
 }
 public CMElementInfoOrigin(EI source) {
   Validate.notNull(source);
   this.source = source;
 }