/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ġ< p > Ċ Ġ* Ġ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 Ċ Ġ* Ġ< p > Ċ Ġ* Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ< p > Ċ Ġ* Ġ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 Ġorg . open rewrite . java . spring . boot 2 Ċ Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . open rewrite . java . Java Parser Ċ import Ġorg . open rewrite . java . Java Recipe Test Ċ Ċ class ĠConditional On Bean Any Nested Condition Test Ġ: ĠJava Recipe Test Ġ{ ĊĠĠĠ Ġoverride Ġval Ġparser : ĠJava Parser ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠJava Parser . from Java Version () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. classpath (" spring - boot - autoconfigure ", Ġ" spring - context ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġoverride Ġval Ġrecipe Ġ= ĠConditional On Bean Any Nested Condition () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconditional Annotation Single Class Candidate No Change () Ġ= Ġassert Un changed ( ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Conditional On Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠConfig Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ({ Aa . class }) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Ġthing One () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( Aa . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing Two Ġthing Two () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing Two (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconditional Annotation Multiple Class Candidates () Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Conditional On Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠConfig Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ({ Aa . class , ĠB b . class }) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Two Ġthing One Two () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One Two (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ({ Aa . class , ĠB b . class }) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Two Three Ġthing One Two Three () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One Two Three (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ({ Cc . class , ĠB b . class }) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing Four Ġthing Four () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing Four (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Any Nested Condition ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Conditional On Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Conditional ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠConfig Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional ( Condition Aa Or Bb . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Two Ġthing One Two () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One Two (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional ( Condition Aa Or Bb . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Two Three Ġthing One Two Three () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One Two Three (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional ( Condition Bb Or Cc . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing Four Ġthing Four () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing Four (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġstatic Ġclass ĠCondition Aa Or Bb Ġextends ĠAny Nested Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCondition Aa Or Bb () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Configuration Phase . REGISTER _ BE AN ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( Aa . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA a Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( Bb . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠB b Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġstatic Ġclass ĠCondition Bb Or Cc Ġextends ĠAny Nested Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCondition Bb Or Cc () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Configuration Phase . REGISTER _ BE AN ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( Bb . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠB b Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( Cc . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠC c Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġskip Enhanced Type Validation Ġ= Ġtrue Ġ// Ġfix me ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtwo Conditional Annotations With Same Multiple Class Candidates Re versed () Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Conditional On Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠThing One Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠThing Two Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠConfig Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ({ Aa . class , ĠB b . class }) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Ġthing One () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ({ Bb . class , ĠA a . class }) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing Two Ġthing Two () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing Two (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Any Nested Condition ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Conditional On Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Conditional ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠThing One Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠThing Two Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠConfig Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional ( Condition Aa Or Bb . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Ġthing One () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional ( Condition Aa Or Bb . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing Two Ġthing Two () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing Two (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġstatic Ġclass ĠCondition Aa Or Bb Ġextends ĠAny Nested Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCondition Aa Or Bb () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Configuration Phase . REGISTER _ BE AN ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( Aa . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA a Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( Bb . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠB b Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġskip Enhanced Type Validation Ġ= Ġtrue Ġ// Ġfix me ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsimple Conditional Annotation Multiple Type ClassNames () Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Conditional On Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠThing One Two Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠConfig Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( type Ġ= Ġ{" com . foo . Aa . class ", Ġ" com . foo . Bb . class "}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Two Ġthing One Two () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One Two (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Any Nested Condition ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . boot . autoconfigure . condition . Conditional On Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Bean ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . context . annotation . Conditional ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠThing One Two Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠConfig Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional ( Condition Aa Or Bb . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠThing One Two Ġthing One Two () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠThing One Two (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġstatic Ġclass ĠCondition Aa Or Bb Ġextends ĠAny Nested Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCondition Aa Or Bb () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper ( Configuration Phase . REGISTER _ BE AN ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( type Ġ= Ġ" com . foo . Aa . class ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA a Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Conditional On Bean ( type Ġ= Ġ" com . foo . Bb . class ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠB b Condition Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġskip Enhanced Type Validation Ġ= Ġtrue Ġ// Ġfix me ĊĠĠĠ Ġ) Ċ } Ċ