/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . ir . types Ċ Ċ import Ġorg . jetbrains . kotlin . ir . util . has Annotation Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . types . model . Flex ible Type Marker Ċ import Ġorg . jetbrains . kotlin . types . model . Simple Type Marker Ċ Ċ internal Ġinterface ĠIr Jvm Flex ible Type Ġ: ĠFlex ible Type Marker Ġ{ ĊĠĠĠ Ġval Ġlower Bound : ĠSimple Type Marker ĊĠĠĠ Ġval Ġupper Bound : ĠSimple Type Marker Ċ } Ċ Ċ internal Ġclass ĠIr Jvm Flex ible Null ability Type ( val Ġir Type : ĠIr Simple Type ) Ġ: ĠIr Jvm Flex ible Type Ġ{ ĊĠĠĠ Ġoverride Ġval Ġlower Bound Ġget () Ġ= Ġir Type . with Has Question Mark ( false ) ĊĠĠĠ Ġoverride Ġval Ġupper Bound Ġget () Ġ= Ġir Type . with Has Question Mark ( true ) Ċ } Ċ Ċ internal Ġval ĠF LEX IBLE _ NULL ABILITY _ FQ N Ġ= ĠF q Name (" kotlin . internal . ir "). child ( Name . identifier (" Flex ible Null ability ")) Ċ Ċ internal Ġfun ĠIr Type . is With Flex ible Null ability () Ġ= ĊĠĠĠ Ġhas Annotation ( FLEX IBLE _ NULL ABILITY _ FQ N ) Ċ Ċ internal Ġfun ĠIr Type . as Jvm Flex ible Type () Ġ= ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġis ĠIr Simple Type Ġ&& Ġis With Flex ible Null ability () Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIr Jvm Flex ible Null ability Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . remove Annotations Ġ{ Ġir Ctor Call Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir Ctor Call . type . class Fq Name Ġ== ĠF LEX IBLE _ NULL ABILITY _ FQ N ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġas ĠIr Simple Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ}