SyntaxNode ExtendIfConditionWithNullCheck(SyntaxNode statement, ExpressionSyntax identifier)
        {
            MultiLineIfBlockSyntax multiLineIfStatement = statement as MultiLineIfBlockSyntax;

            if (multiLineIfStatement != null)
            {
                return(multiLineIfStatement.WithIfStatement(
                           multiLineIfStatement.IfStatement.WithCondition(
                               SyntaxFactory.BinaryExpression(SyntaxKind.AndAlsoExpression,
                                                              ParenthizeIfNeeded(CreateIsNotNothingBinaryExpression(identifier)),
                                                              SyntaxFactory.Token(SyntaxKind.AndAlsoKeyword),
                                                              ParenthizeIfNeeded(multiLineIfStatement.IfStatement.Condition)
                                                              ).WithAdditionalAnnotations(Formatter.Annotation)
                               )));
            }
            SingleLineIfStatementSyntax singleLineIfStatement = statement as SingleLineIfStatementSyntax;

            if (singleLineIfStatement != null)
            {
                return(singleLineIfStatement.WithCondition(
                           SyntaxFactory.BinaryExpression(SyntaxKind.AndAlsoExpression,
                                                          ParenthizeIfNeeded(CreateIsNotNothingBinaryExpression(identifier)),
                                                          SyntaxFactory.Token(SyntaxKind.AndAlsoKeyword),
                                                          ParenthizeIfNeeded(singleLineIfStatement.Condition)
                                                          ).WithAdditionalAnnotations(Formatter.Annotation)
                           ));
            }
            ElseIfBlockSyntax elseIfBlock = statement as ElseIfBlockSyntax;

            if (elseIfBlock != null)
            {
                return(elseIfBlock.WithElseIfStatement(
                           elseIfBlock.ElseIfStatement.WithCondition(
                               SyntaxFactory.BinaryExpression(SyntaxKind.AndAlsoExpression,
                                                              ParenthizeIfNeeded(CreateIsNotNothingBinaryExpression(identifier)),
                                                              SyntaxFactory.Token(SyntaxKind.AndAlsoKeyword),
                                                              ParenthizeIfNeeded(elseIfBlock.ElseIfStatement.Condition)
                                                              ).WithAdditionalAnnotations(Formatter.Annotation)
                               )));
            }

            return(null);
        }