package Ġd dd . f red ge orge . graph Ċ Ċ import Ġd dd . f red ge orge . graph . Link . Companion . cost Ċ Ċ // ĠUnder stand s Ġa Ġroute Ġfrom Ġone ĠNode Ġto Ġanother Ċ class ĠPath Ġinternal Ġconstructor ( private Ġval Ġdestination : ĠNode ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlinks Ġ= Ġmutable ListOf < Link >() ĊĊĠĠĠ Ġinternal Ġin fix Ġfun Ġprepend ( link : ĠLink ) Ġ= Ġlinks . add ( 0 , Ġlink ) ĊĊĠĠĠ Ġfun Ġcost () Ġ= Ġlinks . cost () ĊĠĠĠ Ġfun Ġhop Count () Ġ= Ġlinks . size ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġfun ĠList < Path >. filter ( destination : ĠNode ) Ġ= Ġthis . filter Ġ{ Ġit . destination Ġ== Ġdestination Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġtype alias ĠPath Strategy Ġ= Ġ( Path ) Ġ-> ĠNumber Ċ