package Ġcom . carbon black . intellij . rp ms pec Ċ Ċ import Ġcom . carbon black . intellij . rp ms pec . psi . R pm Spec If Expr Ċ import Ġcom . carbon black . intellij . rp ms pec . psi . R pm Spec Mult iline Macro Ċ import Ġcom . carbon black . intellij . rp ms pec . psi . R pm Spec Types Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . lang . fold ing .* Ċ import Ġcom . intellij . openapi . editor .* Ċ import Ġcom . intellij . openapi . project . D umb Aware Ċ import Ġcom . intellij . openapi . util . Text Range Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ Ċ class ĠR pm Spec Fold ing Builder Ġ: ĠFold ing Builder Ex (), ĠD umb Aware Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġbuild Fold Regions ( root : ĠPsi Element , Ġdocument : ĠDocument , Ġquick : ĠBoolean ): ĠArray < Fold ing Descriptor > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptors Ġ= Ġmutable ListOf < Fold ing Descriptor >() ĊĊĠĠĠĠĠĠĠ Ġval Ġif Statements Ġ= ĠPsi Tree Util . find Children OfType ( root , ĠR pm Spec If Expr :: class . java ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( if Statement Ġin Ġif Statements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Offset Ġ= Ġif Statement . node . find Child ByType ( R pm Spec Types . EOL )?. text Range ?. start Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Offset Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptors . add ( object Ġ: ĠFold ing Descriptor ( if Statement . node , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Range ( start Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Statement . text Range . end Offset ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFold ing Group . new Group (" rpm - spec - if - statement ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Placeholder Text (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"... ${ if Statement . end If Expr ?. text Ġ?: Ġ"" }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmultiline Macros Ġ= ĠPsi Tree Util . find Children OfType ( root , ĠR pm Spec Mult iline Macro :: class . java ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( mult iline Macro Ġin Ġmultiline Macros ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Offset Ġ= Ġmultiline Macro . node . find Child ByType ( R pm Spec Types . EOL )?. text Range ?. start Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Offset Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptors . add ( object Ġ: ĠFold ing Descriptor ( mult iline Macro . node , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Range ( start Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultiline Macro . text Range . end Offset ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFold ing Group . new Group (" rpm - spec - mult iline - macro ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Placeholder Text (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptors . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Placeholder Text ( node : ĠAST Node ) Ġ= Ġ" ..." ĊĠĠĠ Ġoverride Ġfun Ġis Collapsed ByDefault ( node : ĠAST Node ) Ġ= Ġfalse Ċ } Ċ