refactored a lot of functionality up from MethodGen into Type.Class.Method