Looking at the schema definition of "List" at
<element name="varInt" type="xsd:int" />
<element name="varString" type="xsd:string" />
<element name="child" type="xsd1:List" />
Here "child" is defined in such a way that minOccurs="1" and nillable="false" (the defaults). So, the only valid List would not be able to have an end element with null as the value - the last element would always have to point back to another element in the list or itself which I assume is not the intention. Should nillable="true" not be added?