A flexible and versatile infix expression evaluator class designed to meet all your needs regarding reusability and extensibility. Supports typed operands, a handful of arithmetic and logical operators, functions with an arbitrary number of arguments. Ability to add variables, constants and functions at runtime. Implement your own operators, functions and types with minimum effort.