seems .net 3.5 does not support the covariance syntax.
formatting
refactor the parsing engine to split out the responsibilities making it more easy to test and extend. This should allow development for more edge case scenarios and create a more powerful and simplified engine
refactor parsing grouper class
refactor internal namespaces