https://blog.devartis.com/how-i-used-the-visitor-pattern-to-solve-the-shunting-yard-algorithm-b269985a1af0