Remove the duplication of logic and replace synchronous public Evaluate methods with wrappers that are marked with an ObsoleteAttribute.
Having a synchronous version makes it very difficult to reason about what happens when an async Variable Function is evaluated.