The current approximations for java.lang.StringBuilder and java.lang.StringBuffer use an instance of java.lang.String as an internal storage and the java.lang.String#concat method for approximating java.lang.AbstractStringBuilder#append methods. Such approximation is still very complex for symbolic analysis, taking into account that the java.lang.String#concat uses the non-trivial method java.lang.StringConcatHelper#simpleConcat (that includes even jdk.internal.misc.Unsafe invocations`).
Instead of current approximations, it is suggested to use a hand-written dynamic array of characters for simpler approximations. For reference, use org.utbot.engine.overrides.strings.UtStringBuilder implementation in UTBotJava.
The current approximations for
java.lang.StringBuilderandjava.lang.StringBufferuse an instance ofjava.lang.Stringas an internal storage and thejava.lang.String#concatmethod for approximatingjava.lang.AbstractStringBuilder#appendmethods. Such approximation is still very complex for symbolic analysis, taking into account that thejava.lang.String#concatuses the non-trivial methodjava.lang.StringConcatHelper#simpleConcat(that includes evenjdk.internal.misc.Unsafeinvocations`).Instead of current approximations, it is suggested to use a hand-written dynamic array of characters for simpler approximations. For reference, use
org.utbot.engine.overrides.strings.UtStringBuilderimplementation in UTBotJava.