public function check($user, $request, array $options = []) {
		$defaults = ['rules' => $this->_defaults, 'allowAny' => $this->_allowAny];
		$options += $defaults;

		if (empty($options['rules'])) {
			throw new RuntimeException("Missing `'rules'` option.");
		}

		$rules = (array) $options['rules'];
		$this->_error = [];
		$params = array_diff_key($options, $defaults);

		if (!isset($user) && is_callable($this->_user)) {
			$user = $this->_user->__invoke();
		}

		foreach ($rules as $name => $rule) {

			$result = $this->_check($user, $request, $name, $rule, $params);

			if ($result === false && !$options['allowAny']) {
				return false;
			}
			if ($result === true && $options['allowAny']) {
				return true;
			}
		}
		return !$options['allowAny'];
	}