protected function addExpectedValue($key, $value)
    {
        if (isset($this->expectedMocks[$key]) || isset($this->expectedMocksCollections[$key]) || isset($this->expectedValues[$key])) {
            throw new \LogicException(
                sprintf('The expected value "%s" you are trying to add is already set as mock, mock collection or value.', $key)
            );
        }

        if (is_object($value)) {
            throw new \InvalidArgumentException('The expected value you are trying to add is an object. Use addExpectedMock() instead.');
        }

        $this->expectedValues[$key] = $value;

        return $this;
    }