public function hyperFirst($parent, $related, $morph, $type, $morphType)
    {
        $left  = $this->first($parent, $related, $type, 'out');
        $right = $this->first($related, $morph, $morphType, 'out');

        $edge = new HyperEdge($this->query, $parent, $type, $related, $morphType, $morph);
        if ($left)  $edge->setLeft($left);
        if ($right) $edge->setRight($right);

        return $edge;
    }