Rule Mixolydian() {
		return Sequence(IgnoreCase("mix"),
			Optional(Sequence(IgnoreCase("o"),
				Optional(Sequence(IgnoreCase("l"),
					Optional(Sequence(IgnoreCase("y"),
						Optional(Sequence(IgnoreCase("d"),
							Optional(Sequence(IgnoreCase("i"),
								Optional(Sequence(IgnoreCase("a"),
									Optional(IgnoreCase("n"))
								))
							))
						))
					))
				))
			))
		).label(Mixolydian).suppressSubnodes();
	}
Rule Mixolydian ( ) { return Sequence ( IgnoreCase ( "mix" ) , Optional ( Sequence ( IgnoreCase ( "o" ) , Optional ( Sequence ( IgnoreCase ( "l" ) , Optional ( Sequence ( IgnoreCase ( "y" ) , Optional ( Sequence ( IgnoreCase ( "d" ) , Optional ( Sequence ( IgnoreCase ( "i" ) , Optional ( Sequence ( IgnoreCase ( "a" ) , Optional ( IgnoreCase ( "n" ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) . label ( Mixolydian ) . suppressSubnodes ( ) ; }
major with flat 7th

mixolydian ::= "mix" ["o" ["l" ["y" ["d" ["i" ["a" ["n"]]]]]]]