package Ġcom . squareup . an vil . compiler . d agger Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . squareup . an vil . compiler . ass isted Service Ċ import Ġcom . squareup . an vil . compiler . factory Class Ċ import Ġcom . squareup . an vil . compiler . invoke Get Ċ import Ġcom . squareup . an vil . compiler . is Static Ċ import Ġcom . tsch uch ort . compile testing . Kotlin Compilation . ExitCode . COMPI L ATION _ ERROR Ċ import Ġcom . tsch uch ort . compile testing . Kotlin Compilation . ExitCode . INTERNAL _ ERROR Ċ import Ġcom . tsch uch ort . compile testing . Kotlin Compilation . Result Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ import Ġorg . junit . runners . Parameterized . Parameters Ċ import Ġjavax . inject . Provider Ċ Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠAss isted Inject Generator Test ( ĊĠ Ġprivate Ġval Ġuse D agger : ĠBoolean Ċ ) Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Parameters ( name Ġ= Ġ" Use ĠD agger : Ġ{ 0 }") ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġuse D agger (): ĠCollection < Any > Ġ{ ĊĠĠĠĠĠ Ġreturn ĠlistOf ( true , Ġfalse ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġone Ġass isted Ġparameter `() Ġ{ ĊĠĠĠ Ġ/* Ċ package Ġcom . squareup . test ; Ċ Ċ import Ġjavax . annotation . processing . Generated ; Ċ import Ġjavax . inject . Provider ; Ċ Ċ @ Generated ( ĊĠĠĠ Ġvalue Ġ= Ġ" d agger . internal . codegen . Component Processor ", ĊĠĠĠ Ġcomments Ġ= Ġ" https :// d agger . dev " Ċ ) Ċ @ SuppressWarnings ({ ĊĠĠĠ Ġ" unchecked ", ĊĠĠĠ Ġ" raw types " Ċ }) Ċ public Ġfinal Ġclass ĠAss isted Service _ Factory Ġ{ ĊĠ Ġprivate Ġfinal ĠProvider < Integer > Ġinteger Provider ; ĊĊĠ Ġpublic ĠAss isted Service _ Factory ( Provider < Integer > Ġinteger Provider ) Ġ{ ĊĠĠĠ Ġthis . integer Provider Ġ= Ġinteger Provider ; ĊĠ Ġ} ĊĊĠ Ġpublic ĠAss isted Service Ġget ( String Ġstring ) Ġ{ ĊĠĠĠ Ġreturn Ġnew Instance ( integer Provider . get (), Ġstring ); ĊĠ Ġ} ĊĊĠ Ġpublic Ġstatic ĠAss isted Service _ Factory Ġcreate ( Provider < Integer > Ġinteger Provider ) Ġ{ ĊĠĠĠ Ġreturn Ġnew ĠAss isted Service _ Factory ( integer Provider ); ĊĠ Ġ} ĊĊĠ Ġpublic Ġstatic ĠAss isted Service Ġnew Instance ( int Ġinteger , ĠString Ġstring ) Ġ{ ĊĠĠĠ Ġreturn Ġnew ĠAss isted Service ( integer , Ġstring ); ĊĠ Ġ} Ċ } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġstring : ĠString ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , Ġ" Hello ") ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get (" Hello ")). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwithout Ġany Ġparameter `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠ Ġother Ġas ĠAss isted Service ĊĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). isEmpty () ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ}. invoke ( null ) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ}. invoke ( null ) ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get ()). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġtwo Ġass isted Ġparameters `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted (" one ") Ġval Ġstring 1 : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted (" two ") Ġval Ġstring 2 : ĠString ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , Ġ" Hello ", Ġ" World ") ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get (" Hello ", Ġ" World ")). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġonly Ġtwo Ġass isted Ġparameters `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Ass isted (" one ") Ġval Ġstring 1 : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted (" two ") Ġval Ġstring 2 : ĠString ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). isEmpty () ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ}. invoke ( null ) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ" Hello ", Ġ" World ") ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get (" Hello ", Ġ" World ")). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` two Ġidentical Ġass isted Ġtypes Ġmust Ġuse Ġan Ġidentifier `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠSome Type ( val Ġint : ĠInt ) ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġtype 1 : ĠSome Type , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġtype 2 : ĠSome Type ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠassertThat ( exit Code ). isEqualTo ( COMPI L ATION _ ERROR ) ĊĠĠĠĠĠ ĠassertThat ( messages ). contains ( ĊĠĠĠĠĠĠĠ Ġ"@ Ass isted Inject Ġconstructor Ġhas Ġduplicate Ġ@ Ass isted Ġtype : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġ"@ Ass isted Ġcom . squareup . test . Some Type " ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` two Ġidentical Ġass isted Ġtypes Ġmust Ġuse Ġa Ġdifferent Ġidentifier `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠSome Type ( val Ġint : ĠInt ) ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Ass isted (" one ") Ġval Ġtype 1 : ĠSome Type , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted ( value Ġ= Ġ" one ") Ġval Ġtype 2 : ĠSome Type ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠassertThat ( exit Code ). isEqualTo ( COMPI L ATION _ ERROR ) ĊĠĠĠĠĠ ĠassertThat ( messages ). contains ( ĊĠĠĠĠĠĠĠ Ġ"@ Ass isted Inject Ġconstructor Ġhas Ġduplicate Ġ@ Ass isted Ġtype : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġ"@ Ass isted (\" one \") Ġcom . squareup . test . Some Type " ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġfor Ġwithout Ġan Ġass isted Ġparameter `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 ) ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get ()). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġone Ġgeneric Ġparameter `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service < T Ġ: ĠCharSequence > Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġstrings : ĠList < String > ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , ĠlistOf (" Hello ")) ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get ( listOf (" Hello ")) ). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġone Ġgeneric Ġparameter Ġbound Ġby Ġa Ġgeneric `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service < T Ġ: ĠList < String >> Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġstrings : ĠT ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , ĠlistOf (" Hello ")) ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get ( listOf (" Hello ")) ). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġone Ġgeneric Ġparameter Ġbound Ġwith Ġa Ġwhere Ġclause `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service < T > Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval ĠstringBuilder Ġ: ĠT ĊĠĠĠĠĠ Ġ) Ġwhere ĠT Ġ: ĠAppend able , ĠT Ġ: ĠCharSequence ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , ĠStringBuilder ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġtwo Ġgeneric Ġparameters `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service < T Ġ: ĠCharSequence > Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġstrings : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġints : ĠList < Int > ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , ĠlistOf (" Hello "), ĠlistOf ( 1 , Ġ 2 )) ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get ( listOf (" Hello "), ĠlistOf ( 1 , Ġ 2 ))). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġone Ġass isted Ġtype Ġparameter `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service < T Ġ: ĠCharSequence > Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġstring : ĠT ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , Ġ" Hello ") ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get (" Hello ")). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġwith Ġtwo Ġtype Ġparameters `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service < S Ġ: ĠAny , ĠT Ġ: ĠCharSequence > Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠS , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġstring : ĠT ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , Ġ" Hello ") ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get (" Hello ")). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġfor Ġan Ġinner Ġclass `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġclass ĠO uter Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠ Ġval Ġint : ĠInt , ĊĠĠĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġstring : ĠString ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġclass Loader ĊĠĠĠĠĠĠĠ Ġ. load Class (" com . squareup . test . Outer \$ Ass isted Service ") ĊĠĠĠĠĠĠĠ Ġ. factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġ 5 Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġ 5 , Ġ" Hello ") ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get (" Hello ")). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` a Ġfactory Ġclass Ġis Ġgenerated Ġfor Ġnullable Ġparameters `() Ġ{ ĊĠĠĠ Ġ/* Ċ package Ġcom . squareup . test ; Ċ Ċ import Ġjavax . annotation . processing . Generated ; Ċ import Ġjavax . inject . Provider ; Ċ Ċ @ Generated ( ĊĠĠĠ Ġvalue Ġ= Ġ" d agger . internal . codegen . Component Processor ", ĊĠĠĠ Ġcomments Ġ= Ġ" https :// d agger . dev " Ċ ) Ċ @ SuppressWarnings ({ ĊĠĠĠ Ġ" unchecked ", ĊĠĠĠ Ġ" raw types " Ċ }) Ċ public Ġfinal Ġclass ĠAss isted Service _ Factory Ġ{ ĊĠ Ġprivate Ġfinal ĠProvider < Integer > Ġp 0 _ 5 2 2 1 5 Provider ; ĊĊĠ Ġpublic ĠAss isted Service _ Factory ( Provider < Integer > Ġp 0 _ 5 2 2 1 5 Provider ) Ġ{ ĊĠĠĠ Ġthis . p 0 _ 5 2 2 1 5 Provider Ġ= Ġp 0 _ 5 2 2 1 5 Provider ; ĊĠ Ġ} ĊĊĠ Ġpublic ĠAss isted Service Ġget ( String Ġstring ) Ġ{ ĊĠĠĠ Ġreturn Ġnew Instance ( p 0 _ 5 2 2 1 5 Provider . get (), Ġstring ); ĊĠ Ġ} ĊĊĠ Ġpublic Ġstatic ĠAss isted Service _ Factory Ġcreate ( Provider < Integer > Ġp 0 _ 5 2 2 1 5 Provider ) Ġ{ ĊĠĠĠ Ġreturn Ġnew ĠAss isted Service _ Factory ( p 0 _ 5 2 2 1 5 Provider ); ĊĠ Ġ} ĊĊĠ Ġpublic Ġstatic ĠAss isted Service Ġnew Instance ( Integer Ġp 0 _ 5 2 2 1 5 , ĠString Ġstring ) Ġ{ ĊĠĠĠ Ġreturn Ġnew ĠAss isted Service ( p 0 _ 5 2 2 1 5 , Ġstring ); ĊĠ Ġ} Ċ } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdata Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġint : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġval Ġstring : ĠString ? ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfactory Class Ġ= Ġass isted Service . factory Class () ĊĊĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġfactory Class . declared Construct ors . single () ĊĠĠĠĠĠ ĠassertThat ( constructor . parameter Types . toList ()). contains Exactly ( Provider :: class . java ) ĊĊĠĠĠĠĠ Ġval Ġstatic Methods Ġ= Ġfactory Class . declared Methods . filter Ġ{ Ġit . is Static Ġ} ĊĠĠĠĠĠ ĠassertThat ( static Methods ). has Size ( 2 ) ĊĊĠĠĠĠĠ Ġval Ġfactory Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" create " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , ĠProvider Ġ{ Ġnull Ġ}) ĊĠĠĠĠĠ ĠassertThat ( factory Instance :: class . java ). isEqualTo ( factory Class ) ĊĊĠĠĠĠĠ Ġval Ġnew Instance Ġ= Ġstatic Methods . single Ġ{ Ġit . name Ġ== Ġ" newInstance " Ġ} ĊĠĠĠĠĠĠĠ Ġ. invoke ( null , Ġnull , Ġnull ) ĊĊĠĠĠĠĠ ĠassertThat ( factory Instance . invoke Get ( null )). isEqualTo ( newInstance ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` two Ġass isted Ġinject Ġconstructors Ġaren 't Ġsupported `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġstring : ĠString ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Inject Ġconstructor (@ Ass isted Ġstring : ĠString ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠFor Ġsome Ġreason Ġwith ĠD agger Ġthis Ġtest Ġthrows Ġan Ġinternal Ġerror . ĊĠĠĠĠĠ ĠassertThat ( exit Code ). isIn ( listOf ( COMPI L ATION _ ERROR , ĠINTERNAL _ ERROR )) ĊĠĠĠĠĠ ĠassertThat ( messages ). contains (" Types Ġmay Ġonly Ġcontain Ġone Ġinjected Ġconstructor ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` one Ġinject Ġand Ġone Ġass isted Ġinject Ġconstructor Ġaren 't Ġsupported `() Ġ{ ĊĠĠĠ Ġcompile ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġpackage Ġcom . squareup . test ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted ĊĠĠĠĠĠ Ġimport Ġdagger . ass isted . Ass isted Inject ĊĠĠĠĠĠ Ġimport Ġjavax . inject . Inject ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġclass ĠAss isted Service Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġint : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Ass isted Ġstring : ĠString ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Inject Ġconstructor (@ Ass isted Ġstring : ĠString ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠassertThat ( exit Code ). isEqualTo ( COMPI L ATION _ ERROR ) ĊĠĠĠĠĠ ĠassertThat ( messages ). contains (" Types Ġmay Ġonly Ġcontain Ġone Ġinjected Ġconstructor ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Suppress (" CHANG ING _ ARGUMENT S _ EXEC UTION _ ORDER _ FOR _ NAMED _ VAR ARGS ") ĊĠ Ġprivate Ġfun Ġcompile ( ĊĠĠĠ Ġvar arg Ġsources : ĠString , ĊĠĠĠ Ġblock : ĠResult . () Ġ-> ĠUnit Ġ= Ġ{ Ġ} ĊĠ Ġ): ĠResult Ġ= Ġcom . squareup . an vil . compiler . compile ( ĊĠĠĠ Ġsources Ġ= Ġsources , ĊĠĠĠ Ġenable D agger Annotation Processor Ġ= Ġuse D agger , ĊĠĠĠ Ġgenerate D agger Factories Ġ= Ġ! use D agger , ĊĠĠĠ Ġblock Ġ= Ġblock ĊĠ Ġ) Ċ } Ċ