if it is final it will use INVOKESPECIAL instead of INVOKEVIRTUAL I was trying to see if it would be faster that way.
INVOKEVIRTUAL does an extra lookup to support overloading.