package Ġic u . win dea . pl s . model Ċ Ċ class ĠPar ad ox Path ( Ċ ĉ val Ġsub Paths : List < String > Ċ ): Iterable < String >{ Ċ ĉ val Ġlength Ġ= Ġsub Paths . size Ċ ĉ val Ġparent Sub Paths Ġ= Ġsub Paths . drop Last ( 1 ) Ċ ĉ val Ġpath Ġ= Ġsub Paths . join ToString ("/") Ċ ĉ val Ġparent Ġ= Ġparent Sub Paths . join ToString ("/") Ċ ĉ val Ġroot Ġ= Ġparent Sub Paths . first OrNull (). or Empty () Ċ ĉ val ĠfileName Ġ= Ġsub Paths . last OrNull (). or Empty () Ċ ĉ val Ġfile Extension Ġ= ĠfileName . substring After Last ('.') ĊĉĊ ĉ fun ĠisEmpty () Ġ: Boolean { Ċĉ ĉ return Ġlength Ġ== Ġ 0 Ċ ĉ } ĊĉĊ ĉ override Ġfun Ġiterator (): ĠIterator < String > Ġ{ Ċĉ ĉ return Ġsub Paths . iterator () Ċ ĉ } ĊĉĊ ĉ override Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ Ċĉ ĉ return Ġthis Ġ=== Ġother Ġ|| Ġother Ġis ĠPar ad ox Path Ġ&& Ġpath Ġ== Ġother . path Ċ ĉ } ĊĉĊ ĉ override Ġfun ĠhashCode (): ĠInt Ġ{ Ċĉ ĉ return Ġpath . hashCode () Ċ ĉ } ĊĉĊ ĉ override Ġfun ĠtoString (): ĠString Ġ{ Ċĉ ĉ return Ġpath Ċ ĉ } Ċ } Ċ