Multiple Choice Question

I have been thinking about the design of a multiple choice question. Its layout is something like

<question>
   <stem>text....</stem>
   <choices>
            <choice>text ...</choice>
            <choice>text...</choice>
    </choices>
</question>

My initial design might be

class Stem extends Paragraph {}

class Choices extends Block {
    static get contains() { return "choice" }
}

class Choice extends Block {
    static get contains() { return null }
    static get kind() { return "choice." }
}

export class MultipleChoice extends Block {
    static get contains() { return "stem,choices" }
    canContainType(type) {
        return type.name == "Stem" ||  type.name == "Choices"
    }
}

Do you support multiple node types in contains()? What is the significance of the dot in kind()?

For serialization I might have:

MultipleChoice.prototype.serializeDOM = node => {
    let dom = 
        elt("div", {class: "multiplechoice"}, 
//             serialize stem
//             serialize choices
        )
    return dom; 
}

How do I invoke the serialization of subtypes?