▁though ▁the ▁implementation ▁is ▁by ▁necessity ▁quite ▁different . ▁Here ' s ▁a ▁more ▁or ▁less ▁direct ▁translation ▁of ▁the ▁first ▁C # ▁example ▁shown ▁above : ▁ ▁program ▁Sample ; ▁ ▁{$ AP PT YPE ▁CON SO LE } ▁ ▁uses ▁▁ ▁Gener ics . Defaults ; ▁// for ▁I Com par er <> ▁ ▁type ▁▁ ▁T Utils ▁= ▁class ▁▁▁▁ ▁class ▁procedure ▁Make At Le ast < T >( Arr : ▁T Array < T >; ▁const ▁Low est : ▁T ; ▁▁▁▁▁▁ ▁Compar er : ▁I Com par er < T > ); ▁over load ; ▁▁▁▁ ▁class ▁procedure ▁Make At Le ast < T >( Arr : ▁T Array < T >; ▁const ▁Low est : ▁T ); ▁over load ; ▁▁ ▁end ; ▁ ▁class ▁procedure ▁T Utils . Make At Le ast < T >( Arr : ▁T Array < T >; ▁const ▁Low est : ▁T ; ▁▁ ▁Compar er : ▁I Com par er < T > ); ▁var ▁▁ ▁I : ▁Integer ; ▁begin ▁▁ ▁if ▁Compar er ▁= ▁nil ▁then ▁Compar er ▁:= ▁T Com par er < T >. Default ; ▁▁ ▁for ▁I ▁:= ▁Low ( Arr ) ▁to ▁High ( Arr ) ▁do ▁▁▁▁ ▁if ▁Compar er . Comp are ( Arr [ I ], ▁Low est ) ▁< ▁ 0 ▁then ▁▁▁▁▁▁ ▁Arr [ I ] ▁:= ▁Low est ; ▁end ; ▁ ▁class ▁procedure ▁T Utils . Make At Le ast < T >( Arr : ▁T