public function __construct($reference)
{
if (false === is_string($reference) && false === $reference instanceof ValueInterface) {
if (null === $reference) {
$referenceString = 'null';
} elseif (is_array($reference)) {
$referenceString = 'array';
} else {
$referenceString = is_scalar($reference) ? gettype($reference) : get_class($reference);
}
throw InvalidArgumentExceptionFactory::createForInvalidReferenceType($referenceString);
}
$this->reference = $reference;
}