val Ġa Ġ= Ġfun Ġ) Ċ val Ġa Ġ= Ġfun Ġfoo ) Ċ Ċ val Ġa Ġ= Ġfun Ġ[ a ] ĠT . foo ( a Ġ: Ġ) Ġ: Ġbar Ċ Ċ val Ġa Ġ= Ġfun Ġ[ a ()] ĠT . foo <>( a Ġ: Ġfoo ) Ġ: Ġbar Ċ val Ġa Ġ= Ġfun Ġ[ a ()] ĠT .< >( a Ġ: Ġfoo ) Ġ: Ġbar Ċ Ċ val Ġa Ġ= Ġfun ĠT . foo < T , Ġ, ĠT >( a Ġ: Ġfoo ) Ġ: Ġbar Ċ val Ġa Ġ= Ġfun ĠT . foo < , ĠT , Ġ, ĠT >( a Ġ: Ġfoo ) Ġ: Ġbar Ċ val Ġa Ġ= Ġfun ĠT . foo < T , ĠT >( , Ġa Ġ: Ġfoo , Ġ, Ġa : Ġb ) Ġ: Ġbar Ċ Ċ val Ġa Ġ= Ġfun Ġfoo () Ġ: Ġ= Ġa ; Ċ Ċ val Ġpublic _ fun Ġ= Ġpublic Ġfun Ġ() Ċ val Ġopen _ fun Ġ= Ġopen Ġfun Ġ() Ċ val Ġfinal _ fun Ġ= Ġfinal Ġfun Ġ() Ċ Ċ val Ġwhere _ fun Ġ= Ġfun Ġ() Ġwhere ĠT : ĠV Ċ fun Ġwhere _ fun () Ġ= Ġfun Ġ() Ġwhere ĠT : ĠV Ċ Ċ fun Ġouter () Ġ{ ĊĠĠĠ Ġbar ( fun Ġ) ĊĊĠĠĠ Ġbar ( fun ĠT ) ĊĠĠĠ Ġbar ( fun ĠT .) ĊĠĠĠ Ġbar ( fun Ġ[ a ]) ĊĊĊĠĠĠ Ġbar ( public Ġfun Ġ()) ĊĠĠĠ Ġbar ( open Ġfun Ġ()) ĊĠĠĠ Ġbar ( final Ġfun Ġ()) ĊĊĠĠĠ Ġbar ( fun Ġ() Ġwhere ĠT : ĠV ) Ċ }