@Contract(pure = true)
  @NotNull
  public TypeDfaState withRemovedBinding(int variableIndex) {
    if (variableIndex == 0 || myProhibitedCachingVars.get(variableIndex)) {
      return this;
    }
    BitSet newProhibitedVars = (BitSet)myProhibitedCachingVars.clone();
    newProhibitedVars.set(variableIndex, true);
    return new TypeDfaState(myVarTypes, newProhibitedVars);
  }
@Contract(pure = true)
  @NotNull
  public TypeDfaState withRemovedBinding(int variableIndex)