@Override
		public boolean equals(ATNConfig a, ATNConfig b) {
			if ( a==b ) return true;
			if ( a==null || b==null ) return false;
			return a.state.stateNumber==b.state.stateNumber
				&& a.alt==b.alt
				&& a.semanticContext.equals(b.semanticContext);
		}
The reason that we need this is because we don't want the hash map to use
the standard hash code and equals. We need all configurations with the same
{@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively doubles
the number of objects associated with ATNConfigs. The other solution is to
use a hash table that lets us specify the equals/hashcode operation.
runtime/Java/src/org/antlr/v4/runtime/atn/ATNConfigSet.java