public static @NotNull DfType getUnboxedDfType(DfaMemoryState state, @NotNull DfaValue value) {
    if (value instanceof DfaWrappedValue wrappedValue && wrappedValue.getSpecialField() == SpecialField.UNBOX) {
      return state.getDfType(wrappedValue.getWrappedValue());
    }
    if (value instanceof DfaVariableValue && TypeConstraint.fromDfType(value.getDfType()).isPrimitiveWrapper()) {
      return state.getDfType(SpecialField.UNBOX.createValue(value.getFactory(), value));
    }
    if (value instanceof DfaTypeValue) {
      DfReferenceType refType = tryCast(value.getDfType(), DfReferenceType.class);
      if (refType != null && refType.getSpecialField() == SpecialField.UNBOX) {
        return refType.getSpecialFieldType();
      }
    }
    return state.getDfType(value);
  }
public static @NotNull DfType getUnboxedDfType(DfaMemoryState state, @NotNull DfaValue value)