package Ġcom . ju ul . tu ul box . functional Ċ Ċ /** ĠReturns Ġa Ġlocally - memo ized Ġversion Ġof Ġthis Ġfunction . ĠTwo Ġseparate Ġinv ocations Ġof Ġ[ memo ize ] Ġwill Ġhave Ġtwo Ġseparate Ġcaches . Ġ*/ Ċ public Ġfun Ġ< O > Ġ(() Ġ-> ĠO ). memo ize (): Ġ() Ġ-> ĠO Ġ{ ĊĠĠĠ Ġval Ġvalue Ġby Ġlazy Ġ{ Ġthis () Ġ} ĊĠĠĠ Ġreturn Ġ{ Ġvalue Ġ} Ċ } Ċ Ċ /** ĠReturns Ġa Ġlocally - memo ized Ġversion Ġof Ġthis Ġfunction . ĠTwo Ġseparate Ġinv ocations Ġof Ġ[ memo ize ] Ġwill Ġhave Ġtwo Ġseparate Ġcaches . Ġ*/ Ċ public Ġfun Ġ< I 1 , ĠO > Ġ(( I 1 ) Ġ-> ĠO ). memo ize (): Ġ( I 1 ) Ġ-> ĠO Ġ{ ĊĠĠĠ Ġval Ġcache Ġ= Ġmutable Map Of < I 1 , ĠO >() ĊĠĠĠ Ġreturn Ġ{ Ġi 1 Ġ-> Ġcache . get Or Put ( i 1 ) Ġ{ Ġthis ( i 1 ) Ġ} Ġ} Ċ } Ċ Ċ /** ĠReturns Ġa Ġlocally - memo ized Ġversion Ġof Ġthis Ġfunction . ĠTwo Ġseparate Ġinv ocations Ġof Ġ[ memo ize ] Ġwill Ġhave Ġtwo Ġseparate Ġcaches . Ġ*/ Ċ public Ġfun Ġ< I 1 , ĠI 2 , ĠO > Ġ(( I 1 , ĠI 2 ) Ġ-> ĠO ). memo ize (): Ġ( I 1 , ĠI 2 ) Ġ-> ĠO Ġ{ ĊĠĠĠ Ġval Ġcache Ġ= Ġmutable Map Of < Pair < I 1 , ĠI 2 >, ĠO >() ĊĠĠĠ Ġreturn Ġ{ Ġi 1 , Ġi 2 Ġ-> Ġcache . get Or Put ( Pair ( i 1 , Ġi 2 )) Ġ{ Ġthis ( i 1 , Ġi 2 ) Ġ} Ġ} Ċ } Ċ Ċ /** ĠReturns Ġa Ġlocally - memo ized Ġversion Ġof Ġthis Ġfunction . ĠTwo Ġseparate Ġinv ocations Ġof Ġ[ memo ize ] Ġwill Ġhave Ġtwo Ġseparate Ġcaches . Ġ*/ Ċ public Ġfun Ġ< I 1 , ĠI 2 , ĠI 3 , ĠO > Ġ(( I 1 , ĠI 2 , ĠI 3 ) Ġ-> ĠO ). memo ize (): Ġ( I 1 , ĠI 2 , ĠI 3 ) Ġ-> ĠO Ġ{ ĊĠĠĠ Ġval Ġcache Ġ= Ġmutable Map Of < Triple < I 1 , ĠI 2 , ĠI 3 >, ĠO >() ĊĠĠĠ Ġreturn Ġ{ Ġi 1 , Ġi 2 , Ġi 3 Ġ-> Ġcache . get Or Put ( Triple ( i 1 , Ġi 2 , Ġi 3 )) Ġ{ Ġthis ( i 1 , Ġi 2 , Ġi 3 ) Ġ} Ġ} Ċ } Ċ Ċ /** ĠReturns Ġa Ġlocally - memo ized Ġversion Ġof Ġthis Ġfunction . ĠTwo Ġseparate Ġinv ocations Ġof Ġ[ memo ize ] Ġwill Ġhave Ġtwo Ġseparate Ġcaches . Ġ*/ Ċ public Ġfun Ġ< I 1 , ĠI 2 , ĠI 3 , ĠI 4 , ĠO > Ġ(( I 1 , ĠI 2 , ĠI 3 , ĠI 4 ) Ġ-> ĠO ). memo ize (): Ġ( I 1 , ĠI 2 , ĠI 3 , ĠI 4 ) Ġ-> ĠO Ġ{ ĊĠĠĠ Ġ// ĠTODO : ĠThis Ġis Ġslightly Ġless Ġefficient Ġthan Ġa ĠTuple 4 Ġdata Ġclass . ĊĠĠĠ Ġval Ġcache Ġ= Ġmutable Map Of < List < Any ? >, ĠO >() ĊĠĠĠ Ġreturn Ġ{ Ġi 1 , Ġi 2 , Ġi 3 , Ġi 4 Ġ-> Ġcache . get Or Put ( listOf ( i 1 , Ġi 2 , Ġi 3 , Ġi 4 )) Ġ{ Ġthis ( i 1 , Ġi 2 , Ġi 3 , Ġi 4 ) Ġ} Ġ} Ċ } Ċ Ċ /** ĠReturns Ġa Ġlocally - memo ized Ġversion Ġof Ġthis Ġfunction . ĠTwo Ġseparate Ġinv ocations Ġof Ġ[ memo ize ] Ġwill Ġhave Ġtwo Ġseparate Ġcaches . Ġ*/ Ċ public Ġfun Ġ< I 1 , ĠI 2 , ĠI 3 , ĠI 4 , ĠI 5 , ĠO > Ġ(( I 1 , ĠI 2 , ĠI 3 , ĠI 4 , ĠI 5 ) Ġ-> ĠO ). memo ize (): Ġ( I 1 , ĠI 2 , ĠI 3 , ĠI 4 , ĠI 5 ) Ġ-> ĠO Ġ{ ĊĠĠĠ Ġ// ĠTODO : ĠThis Ġis Ġslightly Ġless Ġefficient Ġthan Ġa ĠTuple 5 Ġdata Ġclass . ĊĠĠĠ Ġval Ġcache Ġ= Ġmutable Map Of < List < Any ? >, ĠO >() ĊĠĠĠ Ġreturn Ġ{ Ġi 1 , Ġi 2 , Ġi 3 , Ġi 4 , Ġi 5 Ġ-> Ġcache . get Or Put ( listOf ( i 1 , Ġi 2 , Ġi 3 , Ġi 4 , Ġi 5 )) Ġ{ Ġthis ( i 1 , Ġi 2 , Ġi 3 , Ġi 4 , Ġi 5 ) Ġ} Ġ} Ċ } Ċ Ċ /** ĠReturns Ġa Ġlocally - memo ized Ġversion Ġof Ġthis Ġfunction . ĠTwo Ġseparate Ġinv ocations Ġof Ġ[ memo ize ] Ġwill Ġhave Ġtwo Ġseparate Ġcaches . Ġ*/ Ċ public Ġfun Ġ< I 1 , ĠI 2 , ĠI 3 , ĠI 4 , ĠI 5 , ĠI 6 , ĠO > Ġ(( I 1 , ĠI 2 , ĠI 3 , ĠI 4 , ĠI 5 , ĠI 6 ) Ġ-> ĠO ). memo ize (): Ġ( I 1 , ĠI 2 , ĠI 3 , ĠI 4 , ĠI 5 , ĠI 6 ) Ġ-> ĠO Ġ{ ĊĠĠĠ Ġ// ĠTODO : ĠThis Ġis Ġslightly Ġless Ġefficient Ġthan Ġa ĠTuple 6 Ġdata Ġclass . ĊĠĠĠ Ġval Ġcache Ġ= Ġmutable Map Of < List < Any ? >, ĠO >() ĊĠĠĠ Ġreturn Ġ{ Ġi 1 , Ġi 2 , Ġi 3 , Ġi 4 , Ġi 5 , Ġi 6 Ġ-> Ġcache . get Or Put ( listOf ( i 1 , Ġi 2 , Ġi 3 , Ġi 4 , Ġi 5 , Ġi 6 )) Ġ{ Ġthis ( i 1 , Ġi 2 , Ġi 3 , Ġi 4 , Ġi 5 , Ġi 6 ) Ġ} Ġ} Ċ } Ċ