private function upLink(Model $model, array $visited, StoreOptions $opts, $useInitialUpRefs = false)
{
$statement = $this->formatModel($model);
if (in_array($statement->id, $visited)) {
return [];
}
$visited[] = $statement->id;
$up_refs = $this->upRefs($statement, $opts, $useInitialUpRefs);
if ($up_refs->count() > 0) {
return $up_refs->each(function ($up_ref) use($opts, $visited) {
if ($this->downed->has($up_ref->_id)) {
return;
}
$this->downed->merge($this->upLink($up_ref, $visited, $opts));
return $up_ref;
})->values();
} else {
return $this->downLink($model, [], $opts);
}
}