code: Rule Clef() {
  		return Sequence(
  			FirstOfS(
  				ClefName(),
  				SequenceS(IgnoreCase("clef="),
  						FirstOfS(ClefNote(), ClefName()))
  			),
  			OptionalS(ClefLine()),
  			OptionalS(SequenceS(Optional(WSPS()).suppressNode(), ClefOctave())),
  			ZeroOrMoreS(FirstOfS(
  				WSPS().suppressNode(),
  				ClefMiddle(),
  				ClefStafflines(),
  				ClefTranspose()
  			))
  		).label(_Clef);
  	}
docs: clef ::= ( ("clef=" (clef-note / clef-name)) / clef-name)
  [clef-line] [1*WSP clef-octave] [1*WSP clef-middle]