sS limitedStruct(int limit, O o) { var baos = new ByteArrayOutputStream(); var out = new LimitedOutputStream(baos, limit); var writer = printWriter(out); embedded void failMe() { fail("Struct exceeds limit of " + n2(limit) + " bytes: " + shorten(fromUtf8(baos.toByteArray()), limit)); } try { structureToPrintWriter(o, writer); } catch e { writer.close(); failMe(); } writer.close(); S struct = fromUtf8(baos.toByteArray()); if (l(struct) > limit) failMe(); ret struct; }