protected static function getEdgeNodes(
        ParticleInterface $particle, 
        array $pack,
        string $name,
        Direction $direction,
        bool $singular = false 
        ): array
    {
        // $name = strtolower($name); // this is now taken care of beforehand.
        $direction = (string) $direction;
        $node_adj = static::ADJACENCY_EQUIVALENT[$direction]; // in->tail, out->head
        $cargo = $pack[$direction];
        $edges = $particle->edges()->$direction();
        $haystack = $singular ? "singularLabel_class_pairs" : "label_class_pairs";
        $return = [];
        array_walk(
            $edges, function ($item, $key) use (&$return, $name, $cargo, $node_adj, $haystack) {
                if($item instanceof $cargo->$haystack[$name]) {
                    $return[] = $item->$node_adj()->node();
                }
            }
        );
        return $return;
    }