@Override
    public void parse(BasicPrattExpressionParser parser,
                      PsiBuilder builder,
                      PsiBuilder.Marker beforeLhs,
                      IElementType binOpType,
                      int currentPrecedence,
                      int mode) {
      builder.advanceLexer(); // skipping ?

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

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

      final PsiBuilder.Marker falsePart = parser.tryParseWithPrecedenceAtMost(builder, CONDITIONAL_EXPR_PRECEDENCE, mode);
      if (falsePart == null) {
        error(builder, JavaPsiBundle.message("expected.expression"));
      }

      beforeLhs.done(myJavaElementTypeContainer.CONDITIONAL_EXPRESSION);
    }
@Override
    public void parse(BasicPrattExpressionParser parser,
                      PsiBuilder builder,
                      PsiBuilder.Marker beforeLhs,
                      IElementType binOpType,
                      int currentPrecedence,
                      int mode)