Amalgamating Sessions and Methods in Object Oriented Languages with Generics