A multiple substitution specifies a number of glyphs that may replace one other glyph. This may be used to allow the user a choice of variant glyphs.

lookup decompose {
    sub e -> [e e.alt1 e.alt2];
    sub z -> [z z.alt1 z.alt2];

At the left side of -> you should supply one glyph, which is not a list. At the right side one list of glyphs should appear that contains the source glyph and at least one other glyph.