package Ġorg . bal list ac omp ute . physical Ċ Ċ import Ġorg . bal list ac omp ute . datat ypes . Record Batch Ċ import Ġorg . bal list ac omp ute . datat ypes . Column Vector Ċ import Ġorg . bal list ac omp ute . datat ypes . Arrow Field Vector Ċ import Ġorg . bal list ac omp ute . datat ypes . Literal Value Vector Ċ import Ġorg . bal list ac omp ute . datat ypes . Arrow Vector Builder Ċ Ċ import Ġorg . apache . arrow . memory . Root Allocator Ċ import Ġorg . apache . arrow . vector .* Ċ import Ġorg . apache . arrow . vector . types . pojo . Arrow Type Ċ import Ġjava . lang . Unsupported OperationException Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠPhysical Ġrepresentation Ġof Ġan Ġexpression . Ċ Ġ*/ Ċ interface ĠPhysical Expr Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEvaluate Ġthe Ġexpression Ġagainst Ġan Ġinput Ġrecord Ġbatch Ġand Ġproduce Ġa Ġcolumn Ġof Ġdata Ġas Ġoutput ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġevaluate ( input : ĠRecord Batch ): ĠColumnVector Ċ } Ċ Ċ class ĠColumn P Expr ( val Ġi : ĠInt ) Ġ: ĠPhysical Expr Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġevaluate ( input : ĠRecord Batch ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput . field ( i ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠCast P Expr ( val Ġexpr : ĠPhysical Expr , Ġval ĠdataType : ĠArrow Type . Primitive Type ) Ġ: ĠPhysical Expr Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġevaluate ( input : ĠRecord Batch ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġexpr . evaluate ( input ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArrow Type . Int Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġmove Ġthis Ġlogic Ġto Ġseparate Ġsource Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠInt Vector (" v ", ĠRoot Allocator ( Long . MAX _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . allocate New () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠArrow Vector Builder ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġvalue . size ()). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvv Ġ= Ġvalue . getValue ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vv Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set ( it , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( vv ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> Ġbuilder . set ( it , ĠString ( vv ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . value Count Ġ= Ġvalue . size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrow Field Vector ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArrow Type . Floating Point Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġmove Ġthis Ġlogic Ġto Ġseparate Ġsource Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠFloat 8 Vector (" v ", ĠRoot Allocator ( Long . MAX _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . allocate New () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠArrow Vector Builder ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġvalue . size ()). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvv Ġ= Ġvalue . getValue ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vv Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set ( it , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( vv ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> Ġbuilder . set ( it , ĠString ( vv ). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . value Count Ġ= Ġvalue . size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrow Field Vector ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ abstract Ġclass ĠComparison P Expr ( val Ġl : ĠPhysical Expr , Ġval Ġr : ĠPhysical Expr ) Ġ: ĠPhysical Expr Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġevaluate ( input : ĠRecord Batch ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġll Ġ= Ġl . evaluate ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġrr Ġ= Ġr . evaluate ( input ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcompare ( ll , Ġrr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġcompare ( l : ĠColumnVector , Ġr : ĠColumnVector ) Ġ: ĠColumnVector Ċ } Ċ Ċ class ĠEq Expr ( l : ĠPhysical Expr , Ġr : ĠPhysical Expr ): ĠComparison P Expr ( l , r ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcompare ( l : ĠColumnVector , Ġr : ĠColumnVector ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( l . size () Ġ== Ġr . size ()) ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠBit Vector (" v ", ĠRoot Allocator ( Long . MAX _ VALUE )) ĊĠĠĠĠĠĠĠ Ġv . allocate New () ĊĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġl . size ()). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( eq ( l . getValue ( it ), Ġr . getValue ( it ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . set ( it , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . set ( it , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġv . value Count Ġ= Ġl . size () ĊĠĠĠĠĠĠĠ Ġreturn ĠArrow Field Vector ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġeq ( l : ĠAny ?, Ġr : ĠAny ?) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( l Ġis ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Ġis ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . equals ( l , Ġr ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( r Ġis ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . equals ( l , Ġr . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl Ġ== Ġr ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠFor Ġbinary Ġexpressions Ġwe Ġneed Ġto Ġevaluate Ġthe Ġleft Ġand Ġright Ġinput Ġexpressions Ġand Ġthen Ġevaluate Ġthe Ċ Ġ* Ġspecific Ġbinary Ġoperator Ġagainst Ġthose Ġinput Ġvalues , Ġso Ġwe Ġcan Ġuse Ġthis Ġbase Ġclass Ġto Ġsimplify Ġthe Ċ Ġ* Ġimplementation Ġfor Ġeach Ġoperator . Ċ Ġ*/ Ċ abstract Ġclass ĠBinary P Expr ( val Ġl : ĠPhysical Expr , Ġval Ġr : ĠPhysical Expr ) Ġ: ĠPhysical Expr Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġevaluate ( input : ĠRecord Batch ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġll Ġ= Ġl . evaluate ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġrr Ġ= Ġr . evaluate ( input ) ĊĠĠĠĠĠĠĠ Ġreturn Ġevaluate ( ll , Ġrr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġevaluate ( l : ĠColumnVector , Ġr : ĠColumnVector ) Ġ: ĠColumnVector Ċ } Ċ Ċ class ĠEq P Expr ( l : ĠPhysical Expr , Ġr : ĠPhysical Expr ) Ġ: ĠBinary P Expr ( l , Ġr ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġevaluate ( l : ĠColumnVector , Ġr : ĠColumnVector ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠBit Vector (" v ", ĠRoot Allocator ( Long . MAX _ VALUE )) ĊĠĠĠĠĠĠĠ Ġv . allocate New () ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġl . size ()). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( l . getValue ( it ) Ġ== Ġr . getValue ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . set ( it , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . set ( it , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠArrow Field Vector ( v ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMult Expr ( l : ĠPhysical Expr , Ġr : ĠPhysical Expr ): ĠBinary P Expr ( l , r ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġevaluate ( l : ĠColumnVector , Ġr : ĠColumnVector ): ĠColumnVector Ġ{ ĊĊĠĠĠĠĠĠĠ Ġassert ( l . size () Ġ== Ġr . size ()) ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠFloat 8 Vector (" v ", ĠRoot Allocator ( Long . MAX _ VALUE )) ĊĠĠĠĠĠĠĠ Ġv . allocate New () ĊĊĠĠĠĠĠĠĠ Ġ// TODO Ġmake Ġthis Ġgeneric Ġso Ġit Ġsupports Ġall Ġnumeric Ġtypes Ġ.. Ġthis Ġis Ġhard Ġcoded Ġfor Ġthe Ġone Ġtest Ġthat Ġuses Ġit ĊĊĠĠĠĠĠĠĠ ĠTODO () Ċ Ċ // ĠĠĠĠĠĠĠ Ġwhen Ġ( l ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBigInt Vector Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrr Ġ= Ġr Ġas ĠFloat 8 Vector Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġl . value Count ). forEach Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Value Ġ= Ġl . get ( it ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Value Ġ= Ġrr . get ( it ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ//// println ("${ String ( left Value )} Ġ== Ġ${ String ( right Value )} Ġ? ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . set ( it , Ġleft Value . toDouble () Ġ* Ġright Value ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTODO () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġv . value Count Ġ= Ġl . value Count Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠArrow Field Vector ( v ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLiteral Long P Expr ( val Ġvalue : ĠLong ) Ġ: ĠPhysical Expr Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġevaluate ( input : ĠRecord Batch ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLiteral Value Vector ( value , Ġinput . rowCount ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLiteral Double P Expr ( val Ġvalue : ĠDouble ) Ġ: ĠPhysical Expr Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġevaluate ( input : ĠRecord Batch ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLiteral Value Vector ( value , Ġinput . rowCount ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLiteral String P Expr ( val Ġvalue : ĠString ) Ġ: ĠPhysical Expr Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġevaluate ( input : ĠRecord Batch ): ĠColumnVector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLiteral Value Vector ( value . toByteArray (), Ġinput . rowCount ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠAggregate P Expr Ġ{ ĊĠĠĠ Ġfun Ġinput Expression (): ĠPhysical Expr ĊĠĠĠ Ġfun Ġcreate Accumulator (): ĠAcc umulator Ċ } Ċ Ċ class ĠMax P Expr ( private Ġval Ġexpr : ĠPhysical Expr ) Ġ: ĠAggregate P Expr Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinput Expression (): ĠPhysical Expr Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexpr ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Accumulator (): ĠAcc umulator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMax Accumulator () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ interface ĠAcc umulator Ġ{ ĊĠĠĠ Ġfun Ġaccum ulate ( value : ĠAny ?) ĊĠĠĠ Ġfun Ġfinal Value (): ĠAny ? Ċ } Ċ Ċ // class ĠMin Accumulator Ġ: ĠAcc umulator Ġ{ I Ġth i Ċ // ĠĠĠ Ġoverride Ġfun Ġaccum ulate ( value : ĠAny ?) Ġ{ Ċ // ĠĠĠ Ġ} Ċ //} Ċ Ċ class ĠMax Accumulator Ġ: ĠAcc umulator Ġ{ ĊĊĠĠĠ Ġvar Ġvalue : ĠAny ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġaccum ulate ( value : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Max Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġvalue Ġ> Ġthis . value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġvalue Ġ> Ġthis . value Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Max ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfinal Value (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ // Ċ // class ĠSum Accumulator Ġ: ĠAcc umulator Ġ{ Ċ // ĠĠĠ Ġoverride Ġfun Ġaccum ulate ( value : ĠAny ?) Ġ{ Ċ // ĠĠĠ Ġ} Ċ //} Ċ // Ċ // class ĠA vg Accumulator Ġ: ĠAcc umulator Ġ{ Ċ // ĠĠĠ Ġoverride Ġfun Ġaccum ulate ( value : ĠAny ?) Ġ{ Ċ // ĠĠĠ Ġ} Ċ //} Ċ // Ċ // class ĠCount Accumulator Ġ: ĠAcc umulator Ġ{ Ċ // ĠĠĠ Ġoverride Ġfun Ġaccum ulate ( value : ĠAny ?) Ġ{ Ċ // ĠĠĠ Ġ} Ċ //} Ċ // Ċ // class ĠCount Distinct Accumulator Ġ: ĠAcc umulator Ġ{ Ċ // ĠĠĠ Ġoverride Ġfun Ġaccum ulate ( value : ĠAny ?) Ġ{ Ċ // ĠĠĠ Ġ} Ċ //} Ċ