@Nullable
  public PsiBuilder.Marker parseConditional(final PsiBuilder builder, final int mode) {
    final PsiBuilder.Marker condition = parseExpression(builder, ExprType.CONDITIONAL_OR, mode);
    if (condition == null) return null;

    if (builder.getTokenType() != JavaTokenType.QUEST) return condition;
    final PsiBuilder.Marker ternary = condition.precede();
    builder.advanceLexer();

    final PsiBuilder.Marker truePart = parse(builder);
    if (truePart == null) {
      error(builder, JavaPsiBundle.message("expected.expression"));
      ternary.done(myJavaElementTypeContainer.CONDITIONAL_EXPRESSION);
      return ternary;
    }

    if (builder.getTokenType() != JavaTokenType.COLON) {
      error(builder, JavaPsiBundle.message("expected.colon"));
      ternary.done(myJavaElementTypeContainer.CONDITIONAL_EXPRESSION);
      return ternary;
    }
    builder.advanceLexer();

    final PsiBuilder.Marker falsePart = parseConditional(builder, mode);
    if (falsePart == null) {
      error(builder, JavaPsiBundle.message("expected.expression"));
      ternary.done(myJavaElementTypeContainer.CONDITIONAL_EXPRESSION);
      return ternary;
    }

    ternary.done(myJavaElementTypeContainer.CONDITIONAL_EXPRESSION);
    return ternary;
  }
@Nullable
  public PsiBuilder.Marker parseConditional(final PsiBuilder builder, final int mode)