This is largely reusing the infrastructure for non-static methods and is otherwise also pretty similar.