/**
  * Resolves the specified authorization if it's not resolved and checks it.
  * @param ResolvableAuthorizationInterface $resolvable
  * @param array $resolveParams
  * @return bool
  */
 public function check($resolvable, $resolveParams = [])
 {
     if (!$resolvable->resolved()) {
         $resolvable->resolve($resolveParams);
     }
     if (!$resolvable->value()) {
         $this->_unauthorized();
     }
     return true;
 }
 /**
  * Returns 'NOT' operation result of resolvable
  * @return bool
  */
 public function state()
 {
     return !$this->resolvable->state();
 }
 /**
  * Registers a registrable ResolvableAuthorizationInterface for later resolution
  *
  * @param  string $key Name in registry
  * @param ResolvableAuthorizationInterface $resolvable
  * @return null
  */
 public function registerResolvable($key, ResolvableAuthorizationInterface $resolvable)
 {
     if (!$resolvable->registrable()) {
         throw new InvalidArgumentException($key . " isn't registrable");
     }
     ResolvableAuthorizationRegistry::register($key, $resolvable);
     return $resolvable;
 }