private static @NotNull DfType numberAsString(DfaCallArguments args, DfaMemoryState state, int bitsPerChar, int maxBits) {
    DfaValue arg = args.myArguments[0];
    if (arg == null) return DfType.TOP;
    LongRangeSet range = DfLongType.extractRange(state.getDfType(arg));
    int usedBits = range.min() >= 0 ? Long.SIZE - Long.numberOfLeadingZeros(range.max()) : maxBits;
    int max = Math.max(1, (usedBits - 1) / bitsPerChar + 1);
    return STRING_LENGTH.asDfType(intRange(LongRangeSet.range(1, max)));
  }
private static @NotNull DfType numberAsString(DfaCallArguments args, DfaMemoryState state, int bitsPerChar, int maxBits)