package Ġcom . bm . math s Ċ Ċ import Ġcom . bm . math s . operations . Operation Ċ Ċ open Ġclass ĠConstraint < T >( var Ġminimum : ĠT , Ġvar Ġmaximum : ĠT ) Ġ{ ĊĊĠĠĠ Ġfun Ġclone (): ĠConstraint < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠConstraint ( minimum , Ġmaximum ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġclone ( operation : ĠOperation < T >): ĠConstraint < T > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠConstraint ( minimum , Ġmaximum ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Constraint ( constraint : ĠConstraint < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . minimum Ġ= Ġconstraint . minimum ĊĠĠĠĠĠĠĠ Ġthis . maximum Ġ= Ġconstraint . maximum ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmodify Constraints ( operation : ĠOperation < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġminimum Ġ= Ġoperation . perform ( minimum ) ĊĠĠĠĠĠĠĠ Ġmaximum Ġ= Ġoperation . perform ( maximum ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ