generic data specification parameter elem target elem? = none | some(the : elem) ; variables a? : elem?; end generic specification