public function combineWith(Type $otherType) : Type
{
if ($otherType instanceof self && $this->getClass() == $otherType->getClass()) {
return new self($this->getClass(), $this->isNullable() || $otherType->isNullable());
}
if ($otherType instanceof NullType) {
return $this->makeNullable();
}
return new MixedType($this->isNullable() || $otherType->isNullable());
}