public function range($subject, $min, $max) : bool
    {
        if (!is_int($min) && !is_float($min)) {
            throw new InvalidArgumentException('Arg min type[' . Utils::getType($min) . '] is not integer or float.');
        }
        if (!is_int($max) && !is_float($max)) {
            throw new InvalidArgumentException('Arg max type[' . Utils::getType($max) . '] is not integer or float.');
        }
        if ($max < $min) {
            throw new InvalidArgumentException('Arg max[' .  $max . '] cannot be less than arg min[' .  $min . '].');
        }
        if ($subject === null) {
            return false;
        }
        return $subject >= $min && $subject <= $max;
    }