Altought the release 1.1.1 added substitutionGroups support, the Castor version 1.1.2.1 doesn't seem to do anything for substitution groups:
<xsd:element name="A" type="cnv:A_T" />
<xsd:element name="B" substitutionGroup="cnv:A" type="cnv:A_T" />
<xsd:complexType name="A_T" />
<xsd:complexType name="MyClass">
<xsd:sequence>
<xsd:element ref="cnv:A" />
</xsd:sequence>
</xsd:complexType>
the resulted java code is: A extending A_T, B extending A_T and MyClass has the property of type A. Obviously, unmarhalling
<MyClass>
<B />
</MyClass>
fails.