// File ĠO uter . java Ċ import Ġkotlin . Metadata ; Ċ import Ġkotlin . jvm . internal . Intr insics ; Ċ import Ġorg . jetbrains . annotations . NotNull ; Ċ Ċ public Ġfinal Ġclass ĠO uter Ġ{ ĊĠĠ Ġ@ NotNull ĊĠĠ Ġprivate Ġfinal ĠString Ġouter Prop ; ĊĠĠ Ġ@ NotNull ĊĠĠ Ġprivate ĠString Ġside Effects ; ĊĊĠĠ Ġ@ NotNull ĊĠĠ Ġpublic Ġfinal ĠString Ġget Outer Prop () Ġ{ ĊĠĠĠĠĠ Ġreturn Ġthis . outer Prop ; ĊĠĠ Ġ} ĊĊĠĠ Ġ@ NotNull ĊĠĠ Ġpublic Ġfinal ĠString Ġget Side Effects () Ġ{ ĊĠĠĠĠĠ Ġreturn Ġthis . side Effects ; ĊĠĠ Ġ} ĊĊĠĠ Ġpublic Ġfinal Ġvoid Ġset Side Effects (@ NotNull ĠString Ġvar 1 ) Ġ{ ĊĠĠĠĠĠ Ġthis . side Effects Ġ= Ġvar 1 ; ĊĠĠ Ġ} ĊĊĠĠ Ġpublic ĠO uter (@ NotNull ĠString Ġx ) Ġ{ ĊĠĠĠĠĠ Ġsuper (); ĊĠĠĠĠĠ Ġthis . side Effects Ġ= Ġ""; ĊĠĠĠĠĠ Ġthis . outer Prop Ġ= Ġx ; ĊĠĠ Ġ} ĊĊĠĠ Ġpublic Ġabstract Ġclass ĠA 1 Ġ{ ĊĠĠĠĠĠ Ġ@ NotNull ĊĠĠĠĠĠ Ġprivate ĠString Ġparent Prop ; ĊĊĠĠĠĠĠ Ġ@ NotNull ĊĠĠĠĠĠ Ġpublic Ġfinal ĠString ĠgetParent Prop () Ġ{ ĊĠĠĠĠĠĠĠĠ Ġreturn Ġthis . parent Prop ; ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġpublic Ġfinal Ġvoid Ġset Parent Prop (@ NotNull ĠString Ġvar 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġthis . parent Prop Ġ= Ġvar 1 ; ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprotected ĠA 1 (@ NotNull ĠString Ġx ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġsuper (); ĊĠĠĠĠĠĠĠĠ Ġthis . parent Prop Ġ= Ġ""; ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ ĠO uter . this . get Outer Prop () Ġ+ Ġ"#" Ġ+ Ġthis . parent Prop Ġ+ Ġ" first "); ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ Ġthis . parent Prop Ġ+ Ġ"# third "); ĊĠĠĠĠĠĠĠĠ Ġthis . parent Prop Ġ= Ġx Ġ+ Ġ'#' Ġ+ ĠO uter . this . get Outer Prop (); ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ Ġ"# second # "); ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprotected ĠA 1 ( int Ġx ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġthis ( x Ġ+ Ġ"#" Ġ+ ĠO uter . this . get Outer Prop ()); ĊĠĠĠĠĠĠĠĠ ĠString Ġvar 1 0 0 0 1 Ġ= Ġthis . parent Prop ; ĊĠĠĠĠĠĠĠĠ Ġthis . parent Prop Ġ= Ġvar 1 0 0 0 1 Ġ+ Ġ"# int "; ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ Ġ" four th # "); ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġpublic Ġfinal Ġclass ĠA 2 Ġextends ĠO uter . A 1 Ġ{ ĊĠĠĠĠĠ Ġ@ NotNull ĊĠĠĠĠĠ Ġprivate ĠString Ġprop ; ĊĊĠĠĠĠĠ Ġ@ NotNull ĊĠĠĠĠĠ Ġpublic Ġfinal ĠString Ġget Prop () Ġ{ ĊĠĠĠĠĠĠĠĠ Ġreturn Ġthis . prop ; ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġpublic Ġfinal Ġvoid Ġset Prop (@ NotNull ĠString Ġvar 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġthis . prop Ġ= Ġvar 1 ; ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġpublic ĠA 2 (@ NotNull ĠString Ġx ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġsuper ( x Ġ+ Ġ"#" Ġ+ ĠO uter . this . get Outer Prop ()); ĊĠĠĠĠĠĠĠĠ Ġthis . prop Ġ= Ġ""; ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ ĠO uter . this . get Outer Prop () Ġ+ Ġ"#" Ġ+ Ġthis . prop Ġ+ Ġ" f ifth "); ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ Ġthis . prop Ġ+ Ġ"# se vent h "); ĊĠĠĠĠĠĠĠĠ Ġthis . prop Ġ= Ġx Ġ+ Ġ'#' Ġ+ ĠO uter . this . get Outer Prop (); ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ Ġ"# six th "); ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġpublic ĠA 2 ( int Ġx ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġsuper ( x Ġ+ Ġ 1 ); ĊĠĠĠĠĠĠĠĠ Ġthis . prop Ġ= Ġ""; ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ ĠO uter . this . get Outer Prop () Ġ+ Ġ"#" Ġ+ Ġthis . prop Ġ+ Ġ" f ifth "); ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ Ġthis . prop Ġ+ Ġ"# se vent h "); ĊĠĠĠĠĠĠĠĠ ĠString Ġvar 1 0 0 0 1 Ġ= Ġthis . prop ; ĊĠĠĠĠĠĠĠĠ Ġthis . prop Ġ= Ġvar 1 0 0 0 1 Ġ+ Ġx Ġ+ Ġ'#' Ġ+ ĠO uter . this . get Outer Prop () Ġ+ Ġ"# int "; ĊĠĠĠĠĠĠĠĠ ĠO uter . this . set Side Effects ( Outer . this . get Side Effects () Ġ+ Ġ"# e ighth "); ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ } ĊĊ Ċ // File ĠMain . kt ĊĊ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġouter 1 Ġ= ĠO uter (" prop Value 1 ") ĊĠĠĠ Ġval Ġa 1 Ġ= Ġouter 1 . A 2 (" abc ") ĊĠĠĠ Ġif Ġ( a 1 . parent Prop Ġ!= Ġ" abc # prop Value 1 # prop Value 1 ") Ġreturn Ġ" fail 1 : Ġ${ a 1 . parent Prop }" ĊĠĠĠ Ġif Ġ( a 1 . prop Ġ!= Ġ" abc # prop Value 1 ") Ġreturn Ġ" fail 2 : Ġ${ a 1 . prop }" ĊĠĠĠ Ġif Ġ( outer 1 . side Effects Ġ!= Ġ" prop Value 1 # first # third # second # prop Value 1 # f ifth # se vent h # six th ") Ġreturn Ġ" fail 1 - side Effects : Ġ${ outer 1 . side Effects }" ĊĊĠĠĠ Ġval Ġouter 2 Ġ= ĠO uter (" prop Value 2 ") ĊĠĠĠ Ġval Ġa 2 Ġ= Ġouter 2 . A 2 ( 1 2 3 ) ĊĠĠĠ Ġif Ġ( a 2 . parent Prop Ġ!= Ġ" 1 2 4 # prop Value 2 # prop Value 2 # int ") Ġreturn Ġ" fail 3 : Ġ${ a 2 . parent Prop }" ĊĠĠĠ Ġif Ġ( a 2 . prop Ġ!= Ġ" 1 2 3 # prop Value 2 # int ") Ġreturn Ġ" fail 4 : Ġ${ a 2 . prop }" ĊĠĠĠ Ġif Ġ( outer 2 . side Effects Ġ!= Ġ" prop Value 2 # first # third # second # four th # prop Value 2 # f ifth # se vent h # e ighth ") Ġreturn Ġ" fail 2 - side Effects : Ġ${ outer 2 . side Effects }" ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } ĊĊ