public function setScheme($scheme)
    {
        if (!is_null($scheme) && !is_string($scheme)) {
            $argumentType = (is_object($scheme)) ? get_class($scheme) : gettype($scheme);
            throw new \InvalidArgumentException('Expected scheme as string; got ' . $argumentType);