@NotNull
      @Override
      public ProblemType getProblemType(@NotNull PsiReferenceExpression optionalRef,
                                        @Nullable PsiElement trueElement,
                                        @Nullable PsiElement falseElement) {
        if (falseElement != null && !(falseElement instanceof PsiEmptyStatement)) return ProblemType.NONE;
        if (!(trueElement instanceof PsiStatement)) return ProblemType.NONE;
        if (trueElement instanceof PsiExpressionStatement) {
          PsiExpression expression = ((PsiExpressionStatement)trueElement).getExpression();
          if (isOptionalGetCall(expression, optionalRef)) return ProblemType.NONE;
          trueElement = expression;
        }
        return getTypeByLambdaCandidate(optionalRef, trueElement, null);
      }
@NotNull
      @Override
      public ProblemType getProblemType(@NotNull PsiReferenceExpression optionalRef,
                                        @Nullable PsiElement trueElement,
                                        @Nullable PsiElement falseElement)