public function setToValuePropertyName($toValuePropertyName)
    {
        if (!is_string($toValuePropertyName) || empty($toValuePropertyName)) {
            throw new InvalidArgumentException('"To value property name" argument must be string and must not be empty.');
        }

        if (!property_exists($this, $toValuePropertyName)) {
            throw new InvalidArgumentException(sprintf('Property "%s" does not exist.', $toValuePropertyName));
        }

        $this->toValuePropertyName = $toValuePropertyName;

        return $this;
    }