package Ġutils Ċ Ċ import Ġextract ors . features . Extractor Ċ Ċ object ĠPath Utils Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġget Contexts From Method Body ( method Body : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextractor Ġ= ĠExtract or ( method Body ) ĊĠĠĠĠĠĠĠ Ġreturn Ġextractor . process Code Block () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Combined Paths ( method Body : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Contexts : ĠString Ġ= Ġget Contexts From Method Body ( method Body ) ĊĠĠĠĠĠĠĠ Ġif Ġ( path Contexts . isEmpty ()) Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġpath Contexts . split (' Ġ') ĊĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= Ġparts [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Result Line Parts Ġ= Ġarray ListOf ( methodName ) ĊĠĠĠĠĠĠĠ Ġval Ġcontexts Ġ= Ġparts . sub List ( 1 , Ġparts . size ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Contexts Count Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcontext Parts : ĠList < String > ĊĠĠĠĠĠĠĠ Ġvar Ġresult Line Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġif Ġ( contexts . size Ġ< Ġmax Contexts Count ) Ġcontexts Ġelse Ġcontexts . sub List ( 0 , Ġmax Contexts Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( context : ĠString Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Parts Ġ= Ġcontext . split (',') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Result Line Parts . add ("${ context Parts [ 0 ]}, ${ context Parts [ 1 ]}, ${ context Parts [ 2 ]} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Result Line Parts . forEach Ġ{ Ġpart Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Line Ġ+= Ġ" Ġ$ part " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġspace Count Ġ= Ġmax Contexts Count Ġ- Ġcontexts . size ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. space Count Ġ- Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Line Ġ+= Ġ" Ġ" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult Line ĊĠĠĠ Ġ} Ċ }