package Ġorg . are nd . formatting . block Ċ Ċ import Ġcom . intellij . formatting .* Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . psi . code Style . Common Code Style Settings Ċ import Ġorg . are nd . psi . Are nd Co Clause Ċ import Ġorg . are nd . psi . Are nd Co Clause Body Ċ import Ġorg . are nd . psi . Are nd Element Types .* Ċ import Ġorg . are nd . psi . Are nd Function Body Ċ import Ġorg . are nd . psi . Are nd Instance Body Ċ Ċ open Ġclass ĠGroup Block ( settings : ĠCommon Code Style Settings ?, Ġprivate Ġval Ġblocks : ĠMutable List < Block >, Ġwrap : ĠWrap ?, Ġalignment : ĠAlignment ?, Ġindent : ĠInd ent , Ġparent Block : ĠAbstract Are nd Block ) Ġ: ĊĠĠĠĠĠĠĠ ĠAbstract Are nd Block ( parent Block . node , Ġsettings , Ġwrap , Ġalignment , Ġindent , Ġparent Block ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġbuild Children (): ĠMutable List < Block > Ġ= Ġblocks ĊĊĠĠĠ Ġoverride Ġfun ĠgetText Range (): ĠText Range Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġblocks . first () ĊĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġblocks . last () ĊĠĠĠĠĠĠĠ Ġreturn ĠText Range ( f . text Range . start Offset , Ġl . text Range . end Offset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Child Attributes ( new Child Index : ĠInt ): ĠChild Attributes Ġ{ ĊĠĠĠĠĠĠĠ Ġprint Child Attributes Context ( new Child Index ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( node . elementType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFUNCTION _ CLA USE S , ĠFUNCTION _ BODY , ĠINSTANCE _ BODY Ġ-> Ġreturn ĠChild Attributes . DE LEG ATE _ TO _ PREV _ CHILD ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( new Child Index Ġ== Ġblocks . size ) ĠChild Attributes ( indent , Ġalignment ) Ġelse Ġsuper . getChild Attributes ( new Child Index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Spacing ( child 1 : ĠBlock ?, Ġchild 2 : ĠBlock ): ĠSp acing ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( node . psi Ġis ĠAre nd Function Body Ġ|| Ġnode . psi Ġis ĠAre nd Instance Body Ġ|| Ġnode . psi Ġis ĠAre nd Co Clause Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child 1 Ġis ĠSimple Are nd Block Ġ&& Ġchild 2 Ġis ĠSimple Are nd Block Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild 1 . node . elementType Ġ== ĠPI PE Ġ&& Ġchild 2 . node . psi Ġis ĠAre nd Co Clause ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSimple Are nd Block . one Space No Wrap ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . get Spacing ( child 1 , Ġchild 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġblock Text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( b Ġin Ġblocks ) Ġblock Text Ġ+= Ġ"$ b ; Ġ" ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ block Text Ġ$ text Range " ĊĠĠĠ Ġ} Ċ Ċ }