public function matchRelation($parent, $related, $relatedNode, $relationship, $property, $value = null, $direction = 'out')
    {
        $parentLabels  = $parent->getTable();
        $relatedLabels = $related->getTable();
        $parentNode    = $this->modelAsNode($parentLabels);

        $this->matches[] = array(
            'type'         => 'Relation',
            'property'     => $property,
            'direction'    => $direction,
            'relationship' => $relationship,
            'parent' => array(
                'node'   => $parentNode,
                'labels' => $parentLabels
            ),
            'related' => array(
                'node'   => $relatedNode,
                'labels' => $relatedLabels
            )
        );

        $this->addBinding(array($this->wrap($property) => $value), 'matches');

        return $this;
    }