public function setUpperBound($upperBound)
    {
        if (is_float($upperBound) || (is_bool($upperBound) && $upperBound === false)) {
            $this->upperBound = $upperBound;
        } else {
            $msg = "The upperBound argument must be a float or false if no upper bound, '" . gettype($upperBound) . "' given.";
            throw new InvalidArgumentException($msg);
        }
    }