Resolved the leaking "this" in constructor issue by implementing a parent ProductionRule class with a ProductionRuleInstance subclass which tracks position