/* čĊ Ġ* ĠMIT ĠLicense čĊ Ġ* čĊ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġt ian w ail ai ke 6 1 čĊ Ġ* čĊ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy čĊ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal čĊ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights čĊ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell čĊ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis čĊ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : čĊ Ġ* čĊ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall čĊ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . čĊ Ġ* čĊ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR čĊ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , čĊ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE čĊ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER čĊ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , čĊ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE čĊ Ġ* ĠSOFTWARE . čĊ Ġ*/ čĊč Ċ package Ġcom . tw lk . lib _ rules . base čĊč Ċ import Ġcom . android . tools . lint . detector . api . Location čĊč Ċ /** čĊ Ġ* čĊ Ġ* Ġ@ author Ġtw lk čĊ Ġ* Ġ@ date Ġ 2 0 1 8 / 1 0 / 1 0 čĊ Ġ*/ č Ċ open Ġclass ĠPosition Ġ{ čĊĠĠĠ Ġ@ Jvm Field čĊĠĠĠ Ġprotected Ġvar Ġstart : ĠInt Ġ= Ġ 0 čĊčĊĠĠĠ Ġ@ Jvm Field čĊĠĠĠ Ġprotected Ġvar Ġend : ĠInt Ġ= Ġ 0 čĊčĊĠĠĠ Ġconstructor ( location : ĠLocation ) Ġ: Ġthis ( location . start !!. line , Ġlocation . end !!. line ) čĊčĊĠĠĠ Ġconstructor ( start : ĠInt , Ġend : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . start Ġ= Ġstart čĊĠĠĠĠĠĠĠ Ġthis . end Ġ= Ġend čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġis Parent ( position : ĠPosition ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġstart Ġ<= Ġposition . start Ġ&& Ġend Ġ>= Ġposition . end čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġis Child ( position : ĠPosition ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġstart Ġ>= Ġposition . start Ġ&& Ġend Ġ<= Ġposition . end čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġis ĠPosition ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Ġ== Ġother . start Ġ&& Ġend Ġ== Ġother . end ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder (" Position :") čĊĠĠĠĠĠĠĠ Ġbuilder . append ("[ ") čĊĠĠĠĠĠĠĠ Ġbuilder . append ( Integer . toString ( start )) čĊĠĠĠĠĠĠĠ Ġbuilder . append (",") čĊĠĠĠĠĠĠĠ Ġbuilder . append ( Integer . toString ( end )) čĊĠĠĠĠĠĠĠ Ġbuilder . append (" ]") čĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . toString () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġstart čĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġend čĊĠĠĠĠĠĠĠ Ġreturn Ġresult čĊĠĠĠ Ġ} č Ċ }