protected function setColor(string $type, ?string $color) : interfaces\Style
    {
        if (isset($color) && !isset(static::${$type.'s'}[$color])) {
            throw new \InvalidArgumentException("The $type color [$color] is not recognized.");
        }

        $this->$type = $color;

        return $this;
    }