Function contracts provide the result of the call as a variable called result which can cause name clashes if an input is named the same.
We should handle this more gracefully and allow the user to rename the binding to something else, avoiding the clash.