protected override bool CanAddImportForMethod(Diagnostic diagnostic, ref SyntaxNode node)
		{
			switch (diagnostic.Id)
			{
			case CS1061:
				if (node.IsKind(SyntaxKind.ConditionalAccessExpression))
				{
					node = (node as ConditionalAccessExpressionSyntax).WhenNotNull;
				}
				else if (node.IsKind(SyntaxKind.MemberBindingExpression))
				{
					node = (node as MemberBindingExpressionSyntax).Name;
				}
				else if (node.Parent.IsKind(SyntaxKind.CollectionInitializerExpression))
				{
					return true;
				}

				break;
			case CS0122:
				break;

			case CS1503:
				//// look up its corresponding method name
				var parent = node.GetAncestor<InvocationExpressionSyntax>();
				if (parent == null)
				{
					return false;
				}

				var method = parent.Expression as MemberAccessExpressionSyntax;
				if (method != null)
				{
					node = method.Name;
				}

				break;

			default:
				return false;
			}

			var simpleName = node as SimpleNameSyntax;
			if (!simpleName.IsParentKind(SyntaxKind.SimpleMemberAccessExpression) &&
				!simpleName.IsParentKind(SyntaxKind.MemberBindingExpression))
			{
				return false;
			}

			var memberAccess = simpleName.Parent as MemberAccessExpressionSyntax;
			var memberBinding = simpleName.Parent as MemberBindingExpressionSyntax;
			if (memberAccess.IsParentKind(SyntaxKind.SimpleMemberAccessExpression) ||
				memberAccess.IsParentKind(SyntaxKind.ElementAccessExpression) ||
				memberBinding.IsParentKind(SyntaxKind.SimpleMemberAccessExpression) ||
				memberBinding.IsParentKind(SyntaxKind.ElementAccessExpression))
			{
				return false;
			}

			if (!node.IsMemberAccessExpressionName())
			{
				return false;
			}

			return true;
		}