@Contract(pure = true)
  @NotNull
  public DFAType withNewMixin(@Nullable PsiType mixin, @Nullable ConditionInstruction instruction) {
    if (mixin == null) {
      return this;
    }
    Mixin newMixin = new Mixin(mixin, instruction, instruction != null && instruction.isNegated());
    if (mixins.contains(newMixin)) {
      return this;
    }
    DFAType newDfaType = new DFAType(this.primary);
    newDfaType.mixins.addAll(this.mixins);
    newDfaType.mixins.add(newMixin);
    return newDfaType;
  }
@Contract(pure = true)
  @NotNull
  public DFAType withNewMixin(@Nullable PsiType mixin, @Nullable ConditionInstruction instruction)