package Ġcom . la id pack . s our cer er . generator . flow . attributes . handlers Ċ Ċ import Ġcom . github . jav ap ar ser . ast . expr .* Ċ import Ġcom . la id pack . s our cer er . generator . flow . attributes . Attribute Flow Ċ import Ġcom . la id pack . s our cer er . generator . flow . attributes . Base Attributes Handler Ċ import Ġcom . la id pack . s our cer er . generator . index . Xd Field Ċ Ċ class ĠUn conditional To Attr Assign Handler ( flow : ĠAttribute Flow ) Ġ: ĠBase Attributes Handler < Assign Expr >( flow , ĠAssign Expr :: class ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġhandler Ġ= Ġ:: on Assign Expression Un conditional To Attribute ĊĊĠĠĠ Ġprivate Ġfun Ġon Assign Expression Un conditional To Attribute ( node : ĠAssign Expr ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġassign Ġexpression Ġmight Ġpossible Ġassign Ġattribute Ġif Ġin Ġnested Ġmethod Ġwith Ġresource Ġids Ġas Ġparameters ĊĠĠĠĠĠĠĠ Ġif Ġ(! flow . is Conditional To Attribute Ġ&& Ġflow . is Any Parameter Declared As ResourceName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif ĠType ĠArray Ġgetter Ġis Ġassigning Ġvalue Ġto Ġvariable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . target . is Name Expr Ġ&& Ġnode . value . is MethodCall Expr Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Call Is Assigned To Variable ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ġ// Ġdon 't Ġgo Ġfurther Ġdown Ġthe Ġtree Ġwhen Ġanaly zing Ġstatements Ġw . r . t . Ġattributes ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmethod Call Is Assigned To Variable ( node : ĠAssign Expr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Expr Ġ= Ġnode . target . as Name Expr () ĊĠĠĠĠĠĠĠ Ġval Ġvalue Expr Ġ= Ġnode . value . as MethodCall Expr () ĊĠĠĠĠĠĠĠ Ġif Ġ( flow . class Info . isSet table Field From This Class Or Super Class ( target Expr . name AsString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġflow . is AttributeValue Retrie ved With MethodCall ( value Expr )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattribute Ġ= Ġflow . getAttribute From ResourceName Argument ( value Expr ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Ġ= Ġflow . class Info . getField From This Class Or Super Class ( target Expr . name AsString ) Ġas ĠX d Field ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow . set Typed Array Getter For Attribute ( value Expr , Ġattribute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow . add Setter To Attribute ( field , Ġattribute ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }