protected function setupReferenceType(Reference $reference) { $result = preg_match('#^(0|[1-9]\\d*)$#u', $reference->getKey()); PregHelper::assertMatchResult($result, RegExpException::class, "Regular expression error on reference type detection"); if (1 === $result) { $type = Reference::TYPE_INDEX; } elseif ('-' == $reference->getKey()) { $type = Reference::TYPE_NEXT_INDEX; } else { $type = Reference::TYPE_PROPERTY; } $reference->setType($type); return $this; }