@Override
  protected IRubyObject inspectAry(ThreadContext context) {
    if (!packed()) return super.inspectAry(context);

    final Ruby runtime = context.runtime;
    RubyString str =
        RubyString.newStringLight(runtime, DEFAULT_INSPECT_STR_SIZE, USASCIIEncoding.INSTANCE);
    EncodingUtils.strBufCat(runtime, str, OPEN_BRACKET);
    boolean tainted = isTaint();

    RubyString s = inspect(context, value);
    if (s.isTaint()) tainted = true;
    else str.setEncoding(s.getEncoding());
    str.cat19(s);

    EncodingUtils.strBufCat(runtime, str, CLOSE_BRACKET);

    if (tainted) str.setTaint(true);

    return str;
  }