// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ċ package Ġorg . jetbrains . kotlin . nj 2 k . inference . common Ċ Ċ import Ġcom . intellij . psi . Psi Comment Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġorg . jetbrains . kotlin . nj 2 k .* Ċ import Ġorg . jetbrains . kotlin . psi . Kt Type Element Ċ import Ġorg . jetbrains . kotlin . psi . Kt Type Projection Ċ import Ġorg . jetbrains . kotlin . psi . Kt Type Reference Ċ import Ġorg . jetbrains . kotlin . utils . addTo Std lib . safe As Ċ Ċ fun ĠPsi Element . getLabel (): ĠJ K Element Info Label ? Ġ= ĊĠĠĠ Ġprev Sibling ĊĠĠĠĠĠĠĠ Ġ? . safe As < Psi Comment >() ĊĠĠĠĠĠĠĠ Ġ? . text ĊĠĠĠĠĠĠĠ Ġ? . as Label () ĊĠĠĠĠĠĠĠ Ġ?: Ġparent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . safe As < Kt Type Projection >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . getLabel () ĊĊ Ċ fun ĠPsi Element . element Info ( converter Context : ĠNew J 2 k Converter Context ): ĠList < JK Element Info >? Ġ= ĊĠĠĠ Ġget Label ()?. let Ġ{ Ġlabel Ġ-> ĊĠĠĠĠĠĠĠ Ġconverter Context . elements Info Storage . getInfo For Label ( label ) ĊĠĠĠ Ġ} ĊĊ Ċ inline Ġfun ĠK t Type Reference . has Unknown Label ( context : ĠNew J 2 k Converter Context , Ġis Unknown Label : Ġ( JK TypeInfo ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠ Ġget Label ()?. let Ġ{ Ġlabel Ġ-> ĊĠĠĠĠĠĠĠ Ġcontext . elements Info Storage . getInfo For Label ( label )?. any Ġ{ Ġit . safe As < JK TypeInfo >() ?. let ( is Unknown Label ) Ġ== Ġtrue Ġ} ĊĠĠĠ Ġ} Ġ?: Ġfalse Ċ Ċ inline Ġfun ĠK t Type Element . has Unknown Label ( context : ĠNew J 2 k Converter Context , Ġis Unknown Label : Ġ( JK TypeInfo ) Ġ-> ĠBoolean ) Ġ= ĊĠĠĠ Ġparent ĊĠĠĠĠĠĠĠ Ġ? . safe As < Kt Type Reference >() ĊĠĠĠĠĠĠĠ Ġ? . has Unknown Label ( context , Ġis Unknown Label ) Ġ== Ġtrue Ċ