public function checkPermission($check, BridgePermission $has)
    {
        if (is_string($check))
            return $this->checkPermissionByName($check, $has);
        elseif (is_numeric($check))
            return $this->checkPermissionById($check, $has);
        elseif ($check instanceof BridgePermission)
            return $this->checkPermissionByObject($check, $has);
        else
            throw new \InvalidArgumentException('Permission to check must be a name, ID, or Permission object.');
    }