function getDestructuringHost(reference) {
	if (!reference.isWrite()) {
		return null;
	}
	let node = reference.identifier.parent;

	while (PATTERN_TYPE.test(node.type)) {
		node = node.parent;
	}

	if (!DESTRUCTURING_HOST_TYPE.test(node.type)) {
		return null;
	}
	return node;
}
Gets the VariableDeclarator/AssignmentExpression node that a given reference
belongs to.
This is used to detect a mix of reassigned and never reassigned in a
destructuring.
@param {eslint-scope.Reference} reference A reference to get.
@returns {ASTNode|null} A VariableDeclarator/AssignmentExpression node or
     null.