thanks
in objfpc mode i can imagine this ,but it didn't work unless i specialize (obj)
type
     generic obj<T> = object
		x : T;
     end; 		
operator + (arg1 ,arg2 : obj):obj; // error : here (obj) needs specialization
begin
	result.x := arg1.x + arg2.x;
end;