package Ġk robot . api Ċ Ċ import Ġk robot . ast .* Ċ import Ġk robot . ast . Variance .* Ċ Ċ /* Ġ-------------------------------- ------- Ċ Parameters ĊĠ Ġ-------------------------------- ------- Ġ*/ Ċ public Ġfun Ġparameter ( name : ĠString ): ĠParameter Ġ= ĠParameter ( name ) Ċ public Ġin fix Ġfun ĠString . of ( type : ĠType ): ĠParameter Ġ= ĠParameter ( this , Ġtype Ġ= Ġtype ) Ċ public Ġin fix Ġfun ĠString . of ( raw : ĠString ): ĠParameter Ġ= Ġof ( type ( raw )) Ċ public Ġin fix Ġfun ĠParameter . of ( type : ĠType ): ĠParameter Ġ= Ġcopy ( type Ġ= Ġtype ) Ċ public Ġin fix Ġfun ĠParameter . default ( default : ĠExpr ): ĠParameter Ġ= Ġcopy ( defaultValue Ġ= Ġdefault ) Ċ Ċ /* Ġ-------------------------------- ------- Ċ Type ĠParameters ĊĠ Ġ-------------------------------- ------- Ġ*/ Ċ public Ġfun Ġinvariant ( name : ĠString ): ĠType Parameter Ġ= ĠType Parameter ( NONE , Ġname , Ġnull ) Ċ public Ġfun Ġ` in `( name : ĠString ): ĠType Parameter Ġ= ĠType Parameter ( IN , Ġname , Ġnull ) Ċ public Ġfun Ġout ( name : ĠString ): ĠType Parameter Ġ= ĠType Parameter ( OUT , Ġname , Ġnull ) Ċ public Ġin fix Ġfun ĠType Parameter . lower Bound ( type : ĠType ?): ĠType Parameter Ġ= Ġcopy ( lower Bound Ġ= Ġtype ) Ċ public Ġin fix Ġfun ĠType Parameter . lower Bound ( raw : ĠString ): ĠType Parameter Ġ= Ġlower Bound ( type ( raw )) Ċ Ċ /* Ġ-------------------------------- ------- Ċ Type Ġprojection s ĊĠ Ġ-------------------------------- ------- Ġ*/ Ċ public Ġfun Ġ` in `( type : ĠType ): ĠType Projection Ġ= ĠVari ance Type Projection ( IN , Ġtype ) Ċ public Ġfun Ġout ( type : ĠType ): ĠType Projection Ġ= ĠVari ance Type Projection ( OUT , Ġtype )