public void CheckParentSkip() {
			Symbol symbol = grammar.GetSymbolByName(Symbol.FormatTerminalSymbol("-"));
			SymbolTypeMap<TestToken> parentSymbolTypeMap = new SymbolTypeMap<TestToken>();
			SymbolTypeMap<TestToken> symbolTypeMap = new SymbolTypeMap<TestToken>(parentSymbolTypeMap);
			symbolTypeMap.SetTypeForSymbol(symbol, typeof(TestAdd));
			Assert.Equal(typeof(TestAdd), symbolTypeMap.GetSymbolType(symbol));
		}
		public void CheckParentVersionIncrementType() {
			Symbol symbol = grammar.GetSymbolByName(Symbol.FormatTerminalSymbol("-"));
			SymbolTypeMap<TestToken> parentSymbolTypeMap = new SymbolTypeMap<TestToken>();
			SymbolTypeMap<TestToken> symbolTypeMap = new SymbolTypeMap<TestToken>(parentSymbolTypeMap);
			long version = symbolTypeMap.Version;
			symbolTypeMap.SetTypeForSymbol(symbol, typeof(TestAdd));
			Assert.True(version < symbolTypeMap.Version);
			version = symbolTypeMap.Version;
			parentSymbolTypeMap.SetTypeForSymbol(symbol, typeof(TestAdd));
			Assert.True(version < symbolTypeMap.Version);
		}
		public void InvalidType() {
			SymbolTypeMap<TestToken> symbolTypeMap = new SymbolTypeMap<TestToken>();
			Assert.Throws<ArgumentException>(() => {
				symbolTypeMap.GetBaseTypes(typeof(SemanticToken));
			});
		}
		public void GetSymbolType() {
			Symbol symbol = grammar.GetSymbolByName(Symbol.FormatTerminalSymbol("-"));
			SymbolTypeMap<TestToken> symbolTypeMap = new SymbolTypeMap<TestToken>();
			symbolTypeMap.SetTypeForSymbol(symbol, typeof(TestAdd));
			symbolTypeMap.SetTypeForSymbol(symbol, typeof(TestSubtract));
			Assert.Equal(typeof(TestOperation), symbolTypeMap.GetSymbolType(symbol));
		}
		public void GetSingleAncestor() {
			SymbolTypeMap<TestToken> symbolTypeMap = new SymbolTypeMap<TestToken>();
			ReadOnlyCollection<Type> baseTypes = symbolTypeMap.GetBaseTypes(typeof(TestOperation));
			Assert.Equal(new[] {typeof(TestToken), typeof(TestOperation)}, baseTypes);
		}
		public void GetCommonBaseTypeSame() {
			SymbolTypeMap<TestToken> symbolTypeMap = new SymbolTypeMap<TestToken>();
			Assert.Equal(typeof(TestValue), symbolTypeMap.GetCommonBaseType(typeof(TestValue), typeof(TestValue)));
		}
		public void GetCommonBaseTypeAncestor() {
			SymbolTypeMap<TestToken> symbolTypeMap = new SymbolTypeMap<TestToken>();
			Assert.Equal(typeof(TestOperation), symbolTypeMap.GetCommonBaseType(typeof(TestAdd), typeof(TestSubtract)));
		}