So if `f` is a string, we really do treat it as a property to set and not a function to call? This is extremely confusing, and differs from the behavior of other places in the library where a string is used to refer to a named method that should be called.