@Contract(pure = true)
  @NotNull
  public DFAType withNegated(@NotNull NegatingGotoInstruction negation) {
    if (mixins.isEmpty()) {
      return this;
    }
    final Set<ConditionInstruction> conditionsToNegate = negation.getCondition().getDependentConditions();
    if (ContainerUtil.and(mixins, mixin -> !conditionsToNegate.contains(mixin.myCondition))) {
      return this;
    }
    DFAType result = copy();
    for (ListIterator<Mixin> iterator = result.mixins.listIterator(); iterator.hasNext(); ) {
      Mixin mixin = iterator.next();
      if (conditionsToNegate.contains(mixin.myCondition)) {
        iterator.set(mixin.negate());
      }
    }
    return result;
  }
@Contract(pure = true)
  @NotNull
  public DFAType withNegated(@NotNull NegatingGotoInstruction negation)