@Override
	public int hashCode() {
		int hashCode = MurmurHash.initialize(7);
		hashCode = MurmurHash.update(hashCode, state.stateNumber);
		hashCode = MurmurHash.update(hashCode, alt);
		hashCode = MurmurHash.update(hashCode, context);
		hashCode = MurmurHash.update(hashCode, semanticContext);
		hashCode = MurmurHash.finish(hashCode, 4);
		return hashCode;
	}
An ATN configuration is equal to another if both have
 the same state, they predict the same alternative, and
 syntactic/semantic contexts are the same.
runtime/Java/src/org/antlr/v4/runtime/atn/ATNConfig.java