/* Ċ Ġ* ĠMinecraft ĠDev Ġfor ĠIntelliJ Ċ Ġ* Ċ Ġ* Ġhttps :// minecraft dev . org Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġm inecraft - dev Ċ Ġ* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ*/ Ċ Ċ package Ġcom . de mon wav . mc dev . nbt . lang Ċ Ċ import Ġcom . de mon wav . mc dev . nbt . lang . gen . psi . Nb tt ByteArray Ċ import Ġcom . de mon wav . mc dev . nbt . lang . gen . psi . Nb tt IntArray Ċ import Ġcom . de mon wav . mc dev . nbt . lang . gen . psi . Nb tt Long Array Ċ import Ġcom . de mon wav . mc dev . nbt . lang . gen . psi . Nb tt Types Ċ import Ġcom . intellij . lang . Brace Pair Ċ import Ġcom . intellij . lang . Pa ired Brace Matcher Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . tree . I ElementType Ċ Ċ class ĠNb tt Brace Matcher Ġ: ĠPa ired Brace Matcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Code Construct Start ( file : ĠPsi File , Ġopening Brace Offset : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfile . findElement At ( opening Brace Offset ) ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġ== Ġnull Ġ|| Ġelement Ġis ĠPsi File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġopening Brace Offset ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġelement . parent ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parent Ġis ĠNb tt ByteArray Ġ|| Ġparent Ġis ĠNb tt IntArray Ġ|| Ġparent Ġis ĠNb tt Long Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparent . text Range . start Offset ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġopening Brace Offset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Pairs () Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠBr ace Pair ( Nb tt Types . LP AREN , ĠNb tt Types . RP AREN , Ġtrue ), ĊĠĠĠĠĠĠĠ ĠBr ace Pair ( Nb tt Types . L BRACE , ĠNb tt Types . R BRACE , Ġtrue ), ĊĠĠĠĠĠĠĠ ĠBr ace Pair ( Nb tt Types . L BRACK ET , ĠNb tt Types . R BRACK ET , Ġtrue ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġis Pa ired Br aces Allowed Before Type ( l brace Type : ĠI ElementType , Ġcontext Type : ĠI ElementType ?) Ġ= Ġtrue Ċ } Ċ