Annotations are meant for serialization, not for de-serialization. You can leave the annotations out and use the following:
XStream xstream = new XStream();
xstream.alias("comments", ArrayList.class);
xstream.alias("B", B.class);
xstream.alias("C", C.class);
xstream.alias("A", A.class);
Object o = xstream.fromXML(in);
The result will be a list with A, B or C objects depending on the element name.