private static string GetNameFromDeclaration(IObjectCreationExpression expr)
        {
            var constructedType = expr.GetExpressionType().ToIType().GetName();

            if (expr.Parent != null)
            {
                var assignExpr = expr.Parent as IAssignmentExpression;
                if (assignExpr != null)
                {
                    if (assignExpr.Dest.IsClassifiedAsVariable)
                    {
                        var refExpr = assignExpr.Dest as IReferenceExpression;
                        if (refExpr != null)
                        {
                            var expectedType = refExpr.GetExpressionType().ToIType().GetName();

                            if (constructedType.Equals(expectedType))
                            {
                                return(refExpr.NameIdentifier.Name);
                            }
                        }
                    }
                }
                var varDecl = expr.Parent.Parent as ILocalVariableDeclaration;
                if (varDecl != null)
                {
                    var expectedType = varDecl.DeclaredElement.Type.GetName();
                    var isSameType   = constructedType.Equals(expectedType);
                    if (varDecl.IsVar || isSameType)
                    {
                        var nameFromAssign = varDecl.NameIdentifier;
                        return(nameFromAssign.Name);
                    }
                }
            }

            return(null);
        }