docs: public static Expression constant(String value, ClassFieldManager manager) {
      int encodedLength = Utf8.encodedLength(value);
      if (encodedLength <= MAX_CONSTANT_STRING_LENGTH) {
        return stringConstant(value);
      }
      // else it is too big for a single constant pool entry so split it into a small number of
      // entries and generate a static final field to hold the cat'ed value.
      int startIndex = 0;
      Expression stringExpression = null;
      int length = value.length();
      do {
        int endIndex = offsetOf65KUtf8Bytes(value, startIndex, length);
        // N.B. we may end up splitting the string at a surrogate pair, but the class format uses
        // modified utf8 which is forgiving about such things.
        Expression substringConstant = stringConstant(value.substring(startIndex, endIndex));
        startIndex = endIndex;
        if (stringExpression == null) {
          stringExpression = substringConstant;
        } else {
          stringExpression = stringExpression.invoke(MethodRef.STRING_CONCAT, substringConstant);
        }
      } while (startIndex < length);
      FieldRef fieldRef = manager.addStaticField(LARGE_STRING_CONSTANT_NAME, stringExpression);
      return fieldRef.accessor();
    }