refactor MethodDescriptor