--- glassfish-jaxb-2.1.9/runtime/src/com/sun/xml/bind/v2/model/impl/ReferencePropertyInfoImpl.java.hack	2008-05-23 15:08:06.000000000 -0400
+++ glassfish-jaxb-2.1.9/runtime/src/com/sun/xml/bind/v2/model/impl/ReferencePropertyInfoImpl.java	2009-02-04 15:56:50.840949090 -0500
@@ -219,7 +219,7 @@
         if(!is2_2)  return true;
 
         try {
-            return ref.required();
+            throw new LinkageError();
         } catch(LinkageError e) {
             is2_2 = false;
             return true;    // the value defaults to true
--- glassfish-jaxb-2.1.9/runtime/src/com/sun/xml/bind/v2/schemagen/XmlSchemaGenerator.java.hack	2008-05-20 18:20:46.000000000 -0400
+++ glassfish-jaxb-2.1.9/runtime/src/com/sun/xml/bind/v2/schemagen/XmlSchemaGenerator.java	2009-02-04 15:56:50.841930698 -0500
@@ -1198,7 +1198,7 @@
             }
 
 
-            final Tree choice = Tree.makeGroup(GroupKind.CHOICE, children).makeRepeated(rp.isCollection()).makeOptional(!rp.isRequired());
+            final Tree choice = Tree.makeGroup(GroupKind.CHOICE, children).makeRepeated(rp.isCollection()).makeOptional(rp.isCollection());
 
             final QName ename = rp.getXmlName();
 
--- glassfish-jaxb-2.1.9/xjc/src/com/sun/tools/xjc/generator/bean/field/AbstractField.java.hack	2008-05-20 18:15:02.000000000 -0400
+++ glassfish-jaxb-2.1.9/xjc/src/com/sun/tools/xjc/generator/bean/field/AbstractField.java	2009-02-04 15:56:50.842929106 -0500
@@ -183,7 +183,7 @@
                 .namespace(e.getElementName().getNamespaceURI())
                 .type(e.getType().toType(outline.parent(),IMPLEMENTATION));
             if(getOptions().target.isLaterThan(SpecVersion.V2_2))
-                refw.required(rp.isRequired());
+                throw new LinkageError();
         } else
         if(elements.size()>1) {
             XmlElementRefsWriter refsw = field.annotate2(XmlElementRefsWriter.class);
@@ -193,7 +193,7 @@
                     .namespace(e.getElementName().getNamespaceURI())
                     .type(e.getType().toType(outline.parent(),IMPLEMENTATION));
                 if(getOptions().target.isLaterThan(SpecVersion.V2_2))
-                    refw.required(rp.isRequired());
+                    throw new LinkageError();
             }
         }
 
