// ĠEXPECT ED _ RE ACH ABLE _ NODES : Ġ 1 2 9 9 Ċ package Ġfoo Ċ Ċ // ĠCHECK _ CONTAIN S _ NO _ CALL S : Ġtest 1 Ġexcept = im ul Ċ // ĠCHECK _ CONTAIN S _ NO _ CALL S : Ġtest 2 Ġexcept = im ul Ċ // ĠCHECK _ CONTAIN S _ NO _ CALL S : Ġtest 3 Ġexcept = im ul Ċ // ĠCHECK _ CONTAIN S _ NO _ CALL S : Ġtest 4 _ bu oc d 8 $ Ġexcept = im ul Ċ // ĠCHECK _ CONTAIN S _ NO _ CALL S : Ġtest 5 Ġexcept = im ul Ċ // ĠCHECK _ HAS _ INLINE _ METADATA : Ġapply Ċ // ĠCHECK _ HAS _ INLINE _ METADATA : Ġapply L _ h 4 3 q 6 c $ Ċ // ĠCHECK _ HAS _ INLINE _ METADATA : Ġapply M _ h 4 3 q 6 c $ Ċ // ĠCHECK _ HAS _ INLINE _ METADATA : Ġapply N _ h 4 3 q 6 c $ Ċ // ĠCHECK _ HAS _ NO _ INLINE _ METADATA : Ġapply O _ h 4 3 q 6 c $ Ċ Ċ inline Ċ public Ġfun Ġ< T > Ġapply ( arg : ĠT , Ġfunc : Ġ( T )-> T ): ĠT Ġ= Ġfunc ( arg ) Ċ Ċ public Ġopen Ġclass ĠL Ġ{ ĊĠĠĠ Ġinline ĊĠĠĠ Ġprotected Ġfun Ġ< T > Ġapply L ( arg : ĠT , Ġfunc : Ġ( T )-> T ): ĠT Ġ= Ġfunc ( arg ) ĊĠĠĠ Ġfun Ġtest 4 ( l : ĠL , Ġx : ĠInt , Ġy : ĠInt ): ĠInt Ġ= Ġl . apply L ( x ) Ġ{ Ġit Ġ* Ġy Ġ} Ċ } Ċ Ċ public Ġclass ĠM Ġ{ ĊĠĠĠ Ġinline ĊĠĠĠ Ġpublic Ġfun Ġ< T > Ġapply M ( arg : ĠT , Ġfunc : Ġ( T )-> T ): ĠT Ġ= Ġfunc ( arg ) Ċ } Ċ Ċ internal Ġclass ĠN Ġ{ ĊĠĠĠ Ġinline ĊĠĠĠ Ġpublic Ġfun Ġ< T > Ġapply N ( arg : ĠT , Ġfunc : Ġ( T )-> T ): ĠT Ġ= Ġfunc ( arg ) Ċ } Ċ Ċ private Ġobject ĠO Ġ{ ĊĠĠĠ Ġpublic Ġobject ĠO Inner Ġ{ ĊĠĠĠĠĠĠĠ Ġinline ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġ< T > Ġapply O ( arg : ĠT , Ġfunc : Ġ( T )-> T ): ĠT Ġ= Ġfunc ( arg ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġtest 1 ( x : ĠInt , Ġy : ĠInt ): ĠInt Ġ= Ġapply ( x ) Ġ{ Ġit Ġ* Ġy Ġ} Ċ Ċ internal Ġfun Ġtest 2 ( m : ĠM , Ġx : ĠInt , Ġy : ĠInt ): ĠInt Ġ= Ġm . apply M ( x ) Ġ{ Ġit Ġ* Ġy Ġ} Ċ Ċ internal Ġfun Ġtest 3 ( n : ĠN , Ġx : ĠInt , Ġy : ĠInt ): ĠInt Ġ= Ġn . apply N ( x ) Ġ{ Ġit Ġ* Ġy Ġ} Ċ Ċ internal Ġfun Ġtest 5 ( x : ĠInt , Ġy : ĠInt ): ĠInt Ġ= ĠO . O Inner . apply O ( x ) Ġ{ Ġit Ġ* Ġy Ġ} Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ ĠassertEquals ( 6 , Ġtest 1 ( 2 , Ġ 3 )) ĊĠĠĠ ĠassertEquals ( 2 0 , Ġtest 1 ( 5 , Ġ 4 )) ĊĊĠĠĠ ĠassertEquals ( 6 , Ġtest 2 ( M (), Ġ 2 , Ġ 3 )) ĊĠĠĠ ĠassertEquals ( 2 0 , Ġtest 2 ( M (), Ġ 5 , Ġ 4 )) ĊĊĠĠĠ ĠassertEquals ( 6 , Ġtest 3 ( N (), Ġ 2 , Ġ 3 )) ĊĠĠĠ ĠassertEquals ( 2 0 , Ġtest 3 ( N (), Ġ 5 , Ġ 4 )) ĊĊĠĠĠ ĠassertEquals ( 6 , ĠL (). test 4 ( L (), Ġ 2 , Ġ 3 )) ĊĠĠĠ ĠassertEquals ( 2 0 , ĠL (). test 4 ( L (), Ġ 5 , Ġ 4 )) ĊĊĠĠĠ ĠassertEquals ( 6 , Ġtest 5 ( 2 , Ġ 3 )) ĊĠĠĠ ĠassertEquals ( 2 0 , Ġtest 5 ( 5 , Ġ 4 )) ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ }