package Ġcom . github . pro log db . parser . source Ċ Ċ import Ġcom . github . pro log db . runtime . Pro log Source Information Ċ Ċ class ĠSource Location Range ( val Ġstart : ĠSource Location , Ġval Ġend : ĠSource Location ) Ġ: ĠSource Location ( start . unit , Ġstart . line , Ġstart . column , Ġstart . source Index ), ĠPro log Source Information Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( start . unit Ġ!= Ġend . unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" The Ġtwo Ġgiven Ġlocations Ġmust Ġhave Ġthe Ġsame Ġsource Ġunit .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( start . line Ġ> Ġend . line Ġ|| Ġ( start . line Ġ== Ġend . line Ġ&& Ġstart . column Ġ> Ġend . column )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" The Ġstart Ġmust Ġbe Ġbefore Ġthe Ġend .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġrange To ( other : ĠSource Location ): ĠSource Location Range Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġis ĠSource Location Range ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSource Location Range ( this , Ġother . end ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSource Location Range ( this , Ġother ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġsource FileName : ĠString Ġ= Ġunit . identifier ĊĠĠĠ Ġoverride Ġval Ġsource File Line : ĠInt ? Ġ= Ġstart . line ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠEOF Ġ= ĠSource Location Range ( Source Location . EOF , ĠSource Location . EOF ) ĊĠĠĠ Ġ} Ċ }