There are some problems here, not all cases are covered:
obj.func() # Normal dispatch
obj.func # Value of expression is a function value
obj.value # This is a call to an accessor, e.g., value?()
func() # Dispatch on local var
func() # Call free func
func() # Dispatch on self
There are some problems here, not all cases are covered: