// ĠIssue : ĠK T - 3 7 6 2 1 Ċ // Ġ! LANGUAGE : Ġ+ New Inference Ċ Ċ class ĠInv < T > Ċ class ĠIn < in ĠI > Ċ class ĠOut < out ĠO > Ċ Ċ inline Ġfun Ġ< re ified ĠTB Ġ: ĠInv < TB >> Ġinv Bound (): ĠTB Ġ= ĠTODO () Ċ inline Ġfun Ġ< re ified ĠIB Ġ: ĠIn < IB >> Ġin Bound (): ĠIB Ġ= ĠTODO () Ċ inline Ġfun Ġ< re ified ĠOB Ġ: ĠOut < OB >> Ġout Bound (): ĠOB Ġ= ĠTODO () Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠInv < T >> Ġtest Inv (): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġinv Bound () ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠException () ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠIn < T >> Ġtest In (): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġin Bound () ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠException () ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠUnexpected Ġbehaviour Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠOut < T >> Ġtest Out (): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġout Bound () ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠException () ĊĠĠĠ Ġ} Ċ } Ċ