package Ġcom . gab ri elle eg 1 . pl ank . grammar . element Ċ Ċ import Ġorg . antlr . v 4 . kotlin runtime . Token Ċ import Ġpw . bin om . io . file . File Ċ Ċ sealed Ġclass ĠLocation Ġ{ ĊĠ Ġabstract Ġval Ġfile : ĠPl ank File ĊĊĠ Ġdata Ġclass ĠDefined Ġinternal Ġconstructor ( ĊĠĠĠ Ġval Ġstart : ĠInt , ĊĠĠĠ Ġval Ġend : ĠInt , ĊĠĠĠ Ġoverride Ġval Ġfile : ĠPl ank File , ĊĠ Ġ) Ġ: ĠLocation () Ġ{ ĊĠĠĠ Ġval Ġline Ġ= Ġfile . content . take ( start ). count Ġ{ Ġit Ġ== ĠFile . SEPARATOR Ġ} Ġ+ Ġ 1 ĊĠĠĠ Ġval Ġcolumn Ġ= Ġfile . content . take ( start ). count () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ"${ file . path } Ġ($ line , Ġ$ column )" ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġobject ĠGenerated Ġ: ĠLocation () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġfile : ĠPl ank File Ġget () Ġ= Ġerror (" Should Ġnot Ġget Ġlocation Ġof Ġgenerated Ġcode ") ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġof ( token : ĠToken , Ġfile : ĠPl ank File ): ĠLocation Ġ{ ĊĠĠĠĠĠ Ġreturn ĠDefined ( token . startIndex , Ġtoken . stop Index , Ġfile ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġof ( start : ĠInt , Ġend : ĠInt , Ġfile : ĠPl ank File ): ĠLocation Ġ{ ĊĠĠĠĠĠ Ġreturn ĠDefined ( start , Ġend , Ġfile ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġundefined (): ĠLocation Ġ{ ĊĠĠĠĠĠ Ġreturn ĠGenerated ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ