invokevirtual will invoke an instance method, with dispatch based on the class of the object reference. If a method can't be found an AbstractMethodError is raised.
invokespecial contains special handling for:
- superclass method invocations (actually checks the resolved method's class is a superclass of the current class)
- private method invocation
- instance initialization invocations (
methods, which are void functions generated from constructors)