public final void write(Writer writer, BigInteger[] obj) throws IOException {
   OutputStream stream = writer.stream;
   WriterRefer refer = writer.refer;
   if (refer == null || !refer.write(stream, obj)) {
     write(stream, refer, obj);
   }
 }
 public final void write(Writer writer, StringBuffer obj) throws IOException {
   OutputStream stream = writer.stream;
   switch (obj.length()) {
     case 0:
       stream.write(TagEmpty);
       break;
     case 1:
       ValueWriter.write(stream, obj.charAt(0));
       break;
     default:
       WriterRefer refer = writer.refer;
       if (refer == null || !refer.write(stream, obj)) {
         write(stream, refer, obj);
       }
       break;
   }
 }
 public static final void write(OutputStream stream, WriterRefer refer, BigInteger[] array)
     throws IOException {
   if (refer != null) refer.set(array);
   int length = array.length;
   stream.write(TagList);
   if (length > 0) {
     ValueWriter.writeInt(stream, length);
   }
   stream.write(TagOpenbrace);
   for (int i = 0; i < length; ++i) {
     BigInteger e = array[i];
     if (e == null) {
       stream.write(TagNull);
     } else {
       ValueWriter.write(stream, e);
     }
   }
   stream.write(TagClosebrace);
 }
 public static final void write(OutputStream stream, WriterRefer refer, StringBuffer s)
     throws IOException {
   if (refer != null) refer.set(s);
   stream.write(TagString);
   ValueWriter.write(stream, s.toString());
 }