code: Rule level2ExpressionChaining() {
  		return FirstOf(
  				Sequence(
  						FirstOf(
  								String("++"), String("--"),
  								Ch('!'), Ch('~'),
  								solitarySymbol('+'), solitarySymbol('-'),
  								Sequence(
  										Ch('('), group.basics.optWS(),
  										group.types.type().label("type"),
  										Ch(')'),
  										TestNot(Sequence(
  												actions.typeIsAlsoLegalAsExpression(UP(UP(value("type")))),
  												group.basics.optWS(),
  												FirstOf(solitarySymbol('+'), solitarySymbol('-'))))).label("cast")
  								).label("operator"),
  						group.basics.optWS(),
  						level2ExpressionChaining().label("operand"), set(),
  						set(actions.createUnaryPrefixExpression(value("operand"), node("operator"), text("operator")))),
  					Sequence(postfixIncrementExpressionChaining(), set()));
  	}
docs: P2