/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . room . processor Ċ Ċ import ĠCOMMON Ċ import Ġandroidx . room . Embedded Ċ import Ġandroidx . room . compiler . processing . X Field Element Ċ import Ġandroidx . room . compiler . processing . util . Source Ċ import Ġandroidx . room . compiler . processing . util . X Test Invocation Ċ import Ġandroidx . room . compiler . processing . util . run Processor Test Ċ import Ġandroidx . room . parser . SQL Type Affinity Ċ import Ġandroidx . room . processor . Processor Errors . CAN NOT _ FIND _ GET TER _ FOR _ FIELD Ċ import Ġandroidx . room . processor . Processor Errors . MISSING _ PO JO _ CON STRUCTOR Ċ import Ġandroidx . room . processor . Processor Errors . PO JO _ FIELD _ HAS _ DUPLIC ATE _ COLUMN _ NAME Ċ import Ġandroidx . room . processor . Processor Errors . junction Column Without Index Ċ import Ġandroidx . room . processor . Processor Errors . relation Cannot Find Entity Field Ċ import Ġandroidx . room . processor . Processor Errors . relation Cannot Find J unction Entity Field Ċ import Ġandroidx . room . processor . Processor Errors . relation Cannot Find J unction Parent Field Ċ import Ġandroidx . room . processor . Processor Errors . relation Cannot Find Parent Entity Field Ċ import Ġandroidx . room . testing . context Ċ import Ġandroidx . room . vo . Call Type Ċ import Ġandroidx . room . vo . Constructor Ċ import Ġandroidx . room . vo . Embedded Field Ċ import Ġandroidx . room . vo . Field Ċ import Ġandroidx . room . vo . Field Getter Ċ import Ġandroidx . room . vo . Field Setter Ċ import Ġandroidx . room . vo . Po jo Ċ import Ġandroidx . room . vo . Relation Collector Ċ import Ġcom . google . common . truth . Truth Ċ import Ġcom . squareup . jav ap o et . ClassName Ċ import Ġcom . squareup . jav ap o et . TypeName Ċ import Ġjava . io . File Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Core Matchers . instance Of Ċ import Ġorg . hamcrest . Core Matchers . not Ċ import Ġorg . hamcrest . Core Matchers . notNull Value Ċ import Ġorg . hamcrest . Core Matchers . null Value Ċ import Ġorg . hamcrest . Core Matchers . same Instance Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġorg . mockito . Mockito . do Return Ċ import Ġorg . mockito . Mockito . mock Ċ Ċ /** Ċ Ġ* ĠSome Ġof Ġthe Ġfunctionality Ġis Ġtested Ġvia ĠTable Entity Processor . Ċ Ġ*/ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠPo jo Processor Test Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠMY _ PO JO : ĠClass Name Ġ= ĠClass Name . get (" foo . bar ", Ġ" My Po jo ") ĊĠĠĠĠĠĠĠ Ġval ĠHEADER Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . util .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠMy Po jo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġval ĠFO OTER Ġ= Ġ"\ n }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinherited Private () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar . x ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠBaseClass Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġbase Field ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Base Field (){ Ġreturn Ġbase Field ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġset Base Field ( String Ġbase Field ){ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsources Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġextends Ġfoo . bar . x . Base Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġmy Field ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java (" foo . bar . x . Base Class ", Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" my Field " Ġ}, Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" base Field " Ġ}, Ġnot NullValue ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtransient _ ignore () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransient Ġint Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġbar ; ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 0 ]. name , Ġ` is ` (" bar ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtransient _ with Column Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransient Ġint Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġbar ; ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . map Ġ{ Ġit . name Ġ}. toSet (), Ġ` is `( set Of (" bar ", Ġ" foo "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtransient _ embedded () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransient ĠFoo Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġx ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . map Ġ{ Ġit . name Ġ}. toSet (), Ġ` is `( set Of (" x ", Ġ" bar "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtransient _ inside Embedded () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFoo Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransient Ġint Ġx ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġy ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . map Ġ{ Ġit . name Ġ}. toSet (), Ġ` is `( set Of (" bar ", Ġ" y "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtransient _ relation () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġtransient ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). entity Field . name , Ġ` is ` (" uid ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). parent Field . name , Ġ` is ` (" id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġembedded () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint Ġmy Point ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠPoint Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġx ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġy ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . size , Ġ` is `( 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 1 ]. name , Ġ` is ` (" x ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 2 ]. name , Ġ` is ` (" y ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 0 ]. parent , Ġnull Value ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 1 ]. parent , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 2 ]. parent , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġpo jo . fields [ 2 ]. parent !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( parent . prefix , Ġ` is ` ("")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( parent . field . name , Ġ` is ` (" my Point ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . pojo . typeName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( ClassName . get (" foo . bar . My Po jo ", Ġ" Point ") Ġas ĠType Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġembedded With Prefix () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint Ġmy Point ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠPoint Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġx ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" y 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġy ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . size , Ġ` is `( 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 1 ]. name , Ġ` is ` (" x ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 2 ]. name , Ġ` is ` (" y ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 1 ]. columnName , Ġ` is ` (" fo ox ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields [ 2 ]. columnName , Ġ` is ` (" foo y 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġpo jo . fields [ 2 ]. parent !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( parent . prefix , Ġ` is ` (" foo ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnested Embedded () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint Ġmy Point ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠPoint Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġx ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" y 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġy ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" bar ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoordinate Ġcoordinate ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠCoordinate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Ġlat ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Ġlng ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Ignore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġignored ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . size , Ġ` is `( 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo jo . fields . map Ġ{ Ġit . columnName Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" id ", Ġ" fo ox ", Ġ" foo y 2 ", Ġ" foobar lat ", Ġ" foobar lng ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġembedded _ generic () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . Point ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠPoint Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġx ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġy ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . Base Class ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġ${ Embedded :: class . java . canonical Name }; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠBaseClass < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠT Ġgeneric Field ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run Full Class ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠMy Po jo Ġextends ĠBaseClass < Point > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġnormal Field ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoint , Ġbase ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . size , Ġ` is `( 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo jo . fields . map Ġ{ Ġit . columnName Ġ}. toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of (" x ", Ġ" y ", Ġ" normal Field ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpoint Field Ġ= Ġpo jo . embedded Fields . first Ġ{ Ġit . field . name Ġ== Ġ" generic Field " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoint Field . pojo . typeName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( ClassName . get (" foo . bar ", Ġ" Point ") Ġas ĠType Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġembedded _ bad Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġembedded Primitive ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( invocation . is K sp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthere Ġare Ġno Ġprimitives Ġin ĠK SP Ġso Ġthis Ġwon 't Ġwork . ĠInstead , Ġit Ġwill Ġfail ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbecause Ġwe Ġcannot Ġfind Ġa Ġconstructor Ġfor Ġ` int ` ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( MISSING _ PO JO _ CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( Processor Errors . EMB ED DED _ TYPES _ MUST _ BE _ A _ CLASS _ OR _ INTERFACE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġduplicate Column Names () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġanother ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . pojo Duplicate Field Names ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" id ", Ġ" another ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( PO JO _ FIELD _ HAS _ DUPLIC ATE _ COLUMN _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Count ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġduplicate Column Names From Embedded () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFoo Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġx ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . pojo Duplicate Field Names ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" id ", Ġ" foo Ġ> Ġx ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( PO JO _ FIELD _ HAS _ DUPLIC ATE _ COLUMN _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Count ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdrop Sub PrimaryKey No Warning For Po jo () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ PrimaryKey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoint Ġmy Point ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠPoint Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ PrimaryKey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġx ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġy ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ view () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User Summary > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER _ SUM MARY ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ not Collection () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠUser Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ column Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( Processor Errors . CAN NOT _ USE _ MORE _ THAN _ ONE _ PO JO _ FIELD _ AN NOT ATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ not Entity () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < Not An Entity > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . NOT _ AN _ ENTITY ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( Processor Errors . NOT _ ENTITY _ OR _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ not Declared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġlong Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( invocation . is K sp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin ĠK SP , Ġthere Ġare Ġno Ġprimitives Ġso Ġ` long ` Ġ( kotlin . Long ) Ġwill Ġstill Ġlook Ġlike Ġa ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclass Ġbut Ġthen Ġwe 'll Ġfail Ġbecause Ġit Ġdoesn 't Ġhv ae Ġa Ġ` uid ` Ġcolumn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Cannot Find Entity Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Name Ġ= Ġ" java . lang . Long ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcolumnName Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Columns Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( Processor Errors . REL ATION _ TYPE _ MUST _ BE _ A _ CLASS _ OR _ INTERFACE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ missing Parent () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id k ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Cannot Find Parent Entity Field (" foo . bar . My Po jo ", Ġ" id k ", ĠlistOf (" id ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ missing Entity Field () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" id k ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Cannot Find Entity Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User ", Ġ" id k ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" uid ", Ġ" name ", Ġ" lastName ", Ġ" age ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ missing Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( invocation . is K sp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġhttps :// github . com / google / k sp / issues / 3 7 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠK SP Ġis Ġlo sing Ġ` isError ` Ġinformation Ġin Ġsome Ġcases . ĠCompilation Ġshould Ġstill ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfail Ġ( as Ġclass Ġdoes Ġnot Ġexist ) Ġbut Ġit Ġwill Ġfail Ġwith Ġa Ġdifferent Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation Did Fail () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Element Ġ' foo . bar . My Po jo ' Ġreferences Ġa Ġtype Ġthat Ġis Ġnot Ġpresent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ nested Field () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠNested Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNested Ġnested ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" foo ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). parent Field . columnName , Ġ` is ` (" foo ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ nested Relation () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠUser With Nested Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠUser Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" uid ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġself s ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ", Ġentity Ġ= ĠUser . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User With Nested > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). parent Field . name , Ġ` is ` (" id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ affinity Mismatch () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtrigger Ġassignment Ġevaluation ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRelation Collector . create Collectors ( invocation . context , Ġpo jo . relations ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). entity Field . name , Ġ` is ` (" uid ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). parent Field . name , Ġ` is ` (" id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Warning Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . relation Affinity Mismatch ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Affinity Ġ= ĠSQL Type Affinity . TEXT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Affinity Ġ= ĠSQL Type Affinity . INTEGER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Column Ġ= Ġ" uid " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ simple () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). entity Field . name , Ġ` is ` (" uid ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). parent Field . name , Ġ` is ` (" id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ bad Projection () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ", Ġprojection ={" i _ dont _ exist "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . relation Bad Project ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User ", ĠlistOf (" i _ dont _ exist "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" uid ", Ġ" name ", Ġ" lastName ", Ġ" age Column ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ bad ReturnType In Getter () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid ĠsetUser ( List < User > Ġuser ){ Ġthis . user Ġ= Ġuser ;} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠUser ĠgetUser (){ return Ġnull ;} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( CAN NOT _ FIND _ GET TER _ FOR _ FIELD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ primitive List () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ", Ġ Ġprojection ={" uid "}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= ĠUser . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < Integer > Ġuser Ids ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrel Ġ= Ġpo jo . relations . first () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( rel . projection , Ġ` is `( listOf (" uid "))) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( rel . entity . typeName , Ġ` is `( COMMON . USER _ TYPE _ NAME Ġas ĠType Name )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ string List () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ", Ġ Ġprojection ={" name "}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= ĠUser . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < String > Ġuser Names ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrel Ġ= Ġpo jo . relations . first () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( rel . projection , Ġ` is `( listOf (" name "))) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( rel . entity . typeName , Ġ` is `( COMMON . USER _ TYPE _ NAME Ġas ĠType Name )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ extends Bounds () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList <? Ġextends ĠUser > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). entity Field . name , Ġ` is ` (" uid ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). parent Field . name , Ġ` is ` (" id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ associate By () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj unction Entity Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Keys Ġ= Ġ{" uid "," friend Id "}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforeign Keys Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ForeignKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= ĠUser . class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Columns Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Columns Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete Ġ= ĠForeign Key . CASCADE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ForeignKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= ĠUser . class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Columns Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Columns Ġ= Ġ" friend Id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete Ġ= ĠForeign Key . CASCADE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindices Ġ= Ġ{ Ġ@ Index (" uid "), Ġ@ Index (" friend Id ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠUser Friends X Ref Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġuid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend Id ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociate By Ġ= Ġ@ J unction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠUser Friends X Ref . class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" uid ", Ġentity Column Ġ= Ġ" friend Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , Ġj unction Entity ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . relations . first (). junction , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo jo . relations . first (). junction !!. parent Field . columnName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is ` (" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo jo . relations . first (). junction !!. entity Field . columnName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is ` (" friend Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ associate By _ with View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj unction Entity Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref View ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Database View (" SELECT Ġ 1 , Ġ 2 , ĠFROM ĠUser ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠUser Friends X Ref View Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġuid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend Id ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociate By Ġ= Ġ@ J unction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠUser Friends X Ref View . class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" uid ", Ġentity Column Ġ= Ġ" friend Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , Ġj unction Entity ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ associate By _ default Columns () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj unction Entity Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Keys Ġ= Ġ{" uid "," friend Id "}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforeign Keys Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ForeignKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= ĠUser . class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Columns Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Columns Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete Ġ= ĠForeign Key . CASCADE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ForeignKey ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= ĠUser . class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Columns Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Columns Ġ= Ġ" friend Id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete Ġ= ĠForeign Key . CASCADE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindices Ġ= Ġ{ Ġ@ Index (" uid "), Ġ@ Index (" friend Id ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠUser Friends X Ref Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġuid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend Id ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġfriend Id ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" friend Id ", Ġentity Column Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociate By Ġ= Ġ@ J unction ( User Friends X Ref . class )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , Ġj unction Entity ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ associate By _ missing Parent Column () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj unction Entity Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( primary Keys Ġ= Ġ{" friend From "," uid "}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠUser Friends X Ref Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend From ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġuid ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociate By Ġ= Ġ@ J unction ( User Friends X Ref . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , Ġj unction Entity ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Cannot Find J unction Parent Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", Ġ" id ", ĠlistOf (" friend From ", Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ associate By _ missing Entity Column () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj unction Entity Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( primary Keys Ġ= Ġ{" friend A "," friend B "}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠUser Friends X Ref Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend A ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend B ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġfriend A ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" friend A ", Ġentity Column Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociate By Ġ= Ġ@ J unction ( User Friends X Ref . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , Ġj unction Entity ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Cannot Find J unction Entity Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", Ġ" uid ", ĠlistOf (" friend A ", Ġ" friend B ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ associate By _ missing Specified Parent Column () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj unction Entity Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( primary Keys Ġ= Ġ{" friend A "," friend B "}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠUser Friends X Ref Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend A ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend B ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġfriend A ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" friend A ", Ġentity Column Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociate By Ġ= Ġ@ J unction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠUser Friends X Ref . class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" bad _ col ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , Ġj unction Entity ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Cannot Find J unction Parent Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", Ġ" bad _ col ", ĠlistOf (" friend A ", Ġ" friend B ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ associate By _ missing Specified Entity Column () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj unction Entity Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( primary Keys Ġ= Ġ{" friend A "," friend B "}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠUser Friends X Ref Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend A ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend B ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġfriend A ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" friend A ", Ġentity Column Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociate By Ġ= Ġ@ J unction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠUser Friends X Ref . class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Column Ġ= Ġ" bad _ col ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , Ġj unction Entity ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Cannot Find J unction Entity Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", Ġ" bad _ col ", ĠlistOf (" friend A ", Ġ" friend B ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrelation _ associate By _ warn Index On J unction Column () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj unction Entity Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . User Friends X Ref ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠUser Friends X Ref Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ PrimaryKey ( auto Generate Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġlong Ġrow id ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġuid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġfriend Id ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġfriend Id ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" friend Id ", Ġentity Column Ġ= Ġ" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociate By Ġ= Ġ@ J unction ( User Friends X Ref . class )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < User > Ġuser ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER , Ġj unction Entity ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Warning Count ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Warning Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj unction Column Without Index (" foo . bar . User Friends X Ref ", Ġ" uid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcache () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpo jo Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ HEADER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ FO OTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( sources Ġ= ĠlistOf ( pojo )) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo 1 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . context , Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Processor . Binding Scope . BIND _ TO _ STMT , Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 1 , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo 2 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . context , Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Processor . Binding Scope . BIND _ TO _ STMT , Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 2 , Ġsame Instance ( pojo 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo 3 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . context , Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 3 , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 3 , Ġnot ( same Instance ( pojo 1 ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo 4 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . context , Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Processor . Binding Scope . TWO _ WAY , Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 4 , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 4 , Ġnot ( same Instance ( pojo 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 4 , Ġnot ( same Instance ( pojo 3 ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo 5 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . context , Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Processor . Binding Scope . TWO _ WAY , Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 5 , Ġsame Instance ( pojo 4 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġinvocation . context . COMMON _ TYPES . STRING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmock Element Ġ= Ġmock ( X Field Element :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Return ( type ). ` when `( mock Element ). type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfake Field Ġ= ĠField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġmock Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaff inity Ġ= ĠSQL Type Affinity . TEXT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcolumnName Ġ= Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindexed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfake Embedded Ġ= ĠEmbedded Field ( fake Field , Ġ"", Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo 6 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . context , Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Processor . Binding Scope . TWO _ WAY , Ġfake Embedded ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 6 , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 6 , Ġnot ( same Instance ( pojo 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 6 , Ġnot ( same Instance ( pojo 3 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 6 , Ġnot ( same Instance ( pojo 4 ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo 7 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . context , Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Processor . Binding Scope . TWO _ WAY , Ġfake Embedded ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo 7 , Ġsame Instance ( pojo 6 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpo jo Code Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġsingle Run ( pojo Code ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . constructor , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . constructor ?. params , Ġ` is `( emptyList ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ amb iguous _ two Fields Exact Match () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpo jo Code Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġ_ name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġm Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġsingle Run ( pojo Code ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Ġ= Ġpo jo . constructor ?. params ?. first () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( param , Ġinstance Of ( Constructor . Param . Field Param :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (( param Ġas ĠConstructor . Param . Field Param ). field . name , Ġ` is ` (" m Name ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo jo . fields . find Ġ{ Ġit . name Ġ== Ġ" m Name " Ġ} ?. setter ?. call Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( Call Type . CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ amb iguous _ one Type Matches () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpo jo Code Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġint Ġ_ name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġsingle Run ( pojo Code ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Ġ= Ġpo jo . constructor ?. params ?. first () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( param , Ġinstance Of ( Constructor . Param . Field Param :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (( param Ġas ĠConstructor . Param . Field Param ). field . name , Ġ` is ` (" m Name ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo jo . fields . find Ġ{ Ġit . name Ġ== Ġ" m Name " Ġ} ?. setter ?. call Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( Call Type . CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ amb iguous _ two Fields () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpo jo Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġ_ name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġsingle Run ( pojo ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . amb iguous Constructor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ", ĠlistOf (" m Name ", Ġ"_ name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ no Match Bad Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġfoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( MISSING _ PO JO _ CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ no Match () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġ_ name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġfoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( MISSING _ PO JO _ CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ no Match Multi Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġfoo , ĠString Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( MISSING _ PO JO _ CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ multiple Matching () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm LastName ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġname , ĠString ĠlastName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( Processor Errors . TOO _ MAN Y _ PO JO _ CON STRUCT ORS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ multiple Matching With Ignored () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm LastName ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Ignore ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġname ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġname , ĠString ĠlastName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . constructor , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . constructor ?. params ?. size , Ġ` is `( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo jo . fields . find Ġ{ Ġit . name Ġ== Ġ" m Name " Ġ} ?. setter ?. call Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( Call Type . CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpo jo . fields . find Ġ{ Ġit . name Ġ== Ġ" m LastName " Ġ} ?. setter ?. call Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( Call Type . CON STRUCTOR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ dont Try For Bind To Scope () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm LastName ; ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocess 2 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . BIND _ TO _ STMT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( process 2 . constructor , Ġnull Value ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ bind For Two Way () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm LastName ; ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocess 2 Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . TWO _ WAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( process 2 . constructor , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ multiple Matching _ with No Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm LastName ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġname , ĠString ĠlastName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . constructor ?. params ?. size Ġ?: Ġ- 1 , Ġ` is `( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Warning Containing ( Processor Errors . TOO _ MAN Y _ PO JO _ CON STRUCT ORS _ CHO OS ING _ NO _ ARG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġ// Ġadded Ġfor Ġb / 6 9 5 6 2 1 2 5 ĊĠĠĠ Ġfun Ġconstructor _ with Null ability Annotation () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġm Name ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo (@ android x . annotation . NonNull ĠString Ġname ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġpo jo , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstructor Ġ= Ġpo jo . constructor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( constructor , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( constructor !!. params . size , Ġ` is `( 1 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor _ relation Parameter () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( entity Ġ= Ġfoo . bar . User . class , Ġparent Column Ġ= Ġ" uid ", Ġentity Column =" uid ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprojection Ġ= Ġ" name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠList < String > Ġitems ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġuid ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Po jo ( String Ġuid , ĠList < String > Ġitems ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMMON . USER ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 1 Level _ embedded () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Po jo Ġmy Po jo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo Ġ-> Ġfoo . bar . My Po jo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 1 Level _ relation () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong ĠparentId ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" parentId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSet < My Po jo > Ġchildren ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo Ġ-> Ġfoo . bar . My Po jo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 1 Level _ relation _ specify Entity () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong ĠparentId ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( entity Ġ= ĠA . class , Ġparent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" parentId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSet < A With B > Ġchildren ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA With B Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġb ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo . A Ġ-> Ġfoo . bar . My Po jo . A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 2 Levels _ relation To Embed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġpo jo Id ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" pojo Id ", Ġentity Column Ġ= Ġ" entityId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList < My Entity > Ġmy Entity ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠMy Entity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġentity Id ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Po jo Ġmy Po jo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo Ġ-> Ġfoo . bar . My Po jo . My Entity Ġ-> Ġfoo . bar . My Po jo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 2 Levels _ only Embed s _ pojo To Entity () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Po jo Ġmy Po jo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo Ġ-> Ġfoo . bar . My Po jo . A Ġ-> Ġfoo . bar . My Po jo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 2 Levels _ only Embed s _ only Po jos () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Po jo Ġmy Po jo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo Ġ-> Ġfoo . bar . My Po jo . A Ġ-> Ġfoo . bar . My Po jo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 2 Level _ relation To Embed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong ĠparentId ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Relation ( parent Column Ġ= Ġ" id ", Ġentity Column Ġ= Ġ" parentId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSet < A With B > Ġchildren ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA With B Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġb ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo . A Ġ-> Ġfoo . bar . My Po jo . A With B Ġ-> Ġfoo . bar . My Po jo . A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 3 Levels () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġb ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Po jo Ġmy Po jo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo Ġ-> Ġfoo . bar . My Po jo . A Ġ-> Ġfoo . bar . My Po jo . B Ġ-> Ġfoo . bar . My Po jo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ 1 Level _ 1 Level Down () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġb ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo . A Ġ-> Ġfoo . bar . My Po jo . B Ġ-> Ġfoo . bar . My Po jo . A " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ branch At Level 0 _ after Back Track () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ PrimaryKey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Ġc ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġb ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠC Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Po jo Ġmy Po jo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo Ġ-> Ġfoo . bar . My Po jo . C Ġ-> Ġfoo . bar . My Po jo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecursion _ branch At Level 1 _ after Back Track () Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ PrimaryKey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġid ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġa ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġb ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Po jo Ġmy Po jo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Embedded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC Ġc ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġclass ĠC Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . REC UR SIVE _ REFERENCE _ DETECT ED . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo . bar . My Po jo Ġ-> Ġfoo . bar . My Po jo . A Ġ-> Ġfoo . bar . My Po jo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdata Class _ primary Constructor () Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Data . All Default Vals :: class . java . canonical Name !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Data . All Default Vars :: class . java . canonical Name !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Data . Some Default Vals :: class . java . canonical Name !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Data . Some Default Vars :: class . java . canonical Name !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Data . With Jvm Over loads :: class . java . canonical Name !! ĊĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Processor Test Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( it ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdata Class _ with Jvm Over loads _ primary Constructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Data . With Jvm Over loads :: class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas No Warnings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignored Columns () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( ignored Columns Ġ= Ġ{" bar "}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsources Ġ= ĠlistOf ( source ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" foo " Ġ}, Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" bar " Ġ}, Ġnull Value ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignored Columns _ no Constructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( ignored Columns Ġ= Ġ{" bar "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfinal ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfinal ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġ${ MY _ PO JO . simple Name ()} ( String Ġfoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . foo Ġ= Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . bar Ġ= Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Foo () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . foo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" foo " Ġ}, Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" bar " Ġ}, Ġnull Value ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignored Columns _ no Setter Getter () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( ignored Columns Ġ= Ġ{" bar "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Foo () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . foo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġset Foo ( String Ġfoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . foo Ġ= Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" foo " Ġ}, Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" bar " Ġ}, Ġnull Value ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignored Columns _ column Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( ignored Columns Ġ= Ġ{" my _ bar "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" my _ bar ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" foo " Ġ}, Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" bar " Ġ}, Ġnull Value ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignored Columns _ missing () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Entity ( ignored Columns Ġ= Ġ{" no _ such _ column "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpo jo Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" foo " Ġ}, Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( pojo . fields . find Ġ{ Ġit . name Ġ== Ġ" bar " Ġ}, Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcessor Errors . missing Ignored Columns ( listOf (" no _ such _ column ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Setter _ scope Bind Stmt () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Foo () Ġ{ Ġreturn Ġfoo ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Bar () Ġ{ Ġreturn Ġbar ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . BIND _ TO _ STMT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Setter _ scope Two Way () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Foo () Ġ{ Ġreturn Ġfoo ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Bar () Ġ{ Ġreturn Ġbar ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . TWO _ WAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cannot Ġfind Ġsetter Ġfor Ġfield ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Setter _ scope Read From Cursor () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Foo () Ġ{ Ġreturn Ġfoo ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠString Ġget Bar () Ġ{ Ġreturn Ġbar ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cannot Ġfind Ġsetter Ġfor Ġfield ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Getter _ scope Bind Stmt () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġset Foo ( String Ġfoo ) Ġ{ Ġthis . foo Ġ= Ġfoo ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġset Bar ( String Ġbar ) Ġ{ Ġthis . bar Ġ= Ġbar ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . BIND _ TO _ STMT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing (" Cannot Ġfind Ġgetter Ġfor Ġfield .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Getter _ scope Two Way () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġset Foo ( String Ġfoo ) Ġ{ Ġthis . foo Ġ= Ġfoo ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġset Bar ( String Ġbar ) Ġ{ Ġthis . bar Ġ= Ġbar ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . TWO _ WAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation . assert Compilation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Containing (" Cannot Ġfind Ġgetter Ġfor Ġfield .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Getter _ scope Read Cursor () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . java ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PO JO . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . room .*; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass Ġ${ MY _ PO JO . simple Name ()} Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġbar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġset Foo ( String Ġfoo ) Ġ{ Ġthis . foo Ġ= Ġfoo ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġset Bar ( String Ġbar ) Ġ{ Ġthis . bar Ġ= Ġbar ; Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsetter StartsWith Is () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource . kotlin ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Book . kt ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġfoo . bar ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠBook ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis bn : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis bn 2 : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element (" foo . bar . Book "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . READ _ FROM _ CURSOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). process () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġresult . fields . associate By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Type Ġ= Ġinvocation . context . COMMON _ TYPES . STRING ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfields [" isbn "] ?. getter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Getter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Name Ġ= Ġ" getIs bn ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġstring Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Type Ġ= ĠCall Type . METHOD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfields [" isbn "] ?. setter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Setter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Name Ġ= Ġ" isbn ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġstring Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Type Ġ= ĠCall Type . CON STRUCTOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfields [" isbn 2 "] ?. getter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Getter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Name Ġ= Ġ" getIs bn 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġstring Type . make Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Type Ġ= ĠCall Type . METHOD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfields [" isbn 2 "] ?. setter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Setter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Name Ġ= Ġ" setIs bn 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġstring Type . make Nullable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Type Ġ= ĠCall Type . METHOD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsingle Run ( ĊĠĠĠĠĠĠĠ Ġcode : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġsources : ĠSource , ĊĠĠĠĠĠĠĠ Ġclasspath : ĠList < File > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġhandler : Ġ( Po jo , ĠX Test Invocation ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpo jo Code Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ HEADER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ FO OTER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" CHANG ING _ ARGUMENT S _ EXEC UTION _ ORDER _ FOR _ NAMED _ VAR ARGS ") ĊĠĠĠĠĠĠĠ Ġsingle Run Full Class ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġpo jo Code , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsources Ġ= Ġsources , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Ġ= Ġclasspath , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler Ġ= Ġhandler ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsingle Run Full Class ( ĊĠĠĠĠĠĠĠ Ġcode : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġsources : ĠSource , ĊĠĠĠĠĠĠĠ Ġclasspath : ĠList < File > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġhandler : Ġ( Po jo , ĠX Test Invocation ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpo jo Source Ġ= ĠSource . java ( MY _ PO JO . toString (), Ġcode ) ĊĠĠĠĠĠĠĠ Ġval Ġall Ġ= Ġsources . toList () Ġ+ Ġpo jo Source ĊĠĠĠĠĠĠĠ Ġrun Processor Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsources Ġ= Ġall , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Ġ= Ġclasspath ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPo jo Processor . create For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġinvocation . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġinvocation . processing Env . require Type Element ( MY _ PO JO ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Scope Ġ= ĠField Processor . Binding Scope . TWO _ WAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). process (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvocation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠKotlin Ġdata Ġclasses Ġto Ġverify Ġthe ĠPo jo Processor . ĊĠĠĠ Ġprivate Ġclass ĠTest Data Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠAll Default Vals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumber : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbit : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠAll Default Vars ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnumber : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbit : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSome Default Vals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumber : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbit : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSome Default Vars ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnumber : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbit : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠWith Jvm Over loads Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlastName : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnumber : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbit : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ