         out.writeObject(_creds);
         out.writeField(_version);
         out.writeField(_zone);
-        out.writeField(_bootGroups);
+        out.writeObject(_bootGroups);
     }
 
     protected var _creds :Credentials;
     protected var _version :String;
     protected var _zone :String;
-    protected var _bootGroups :Array;
+    protected var _bootGroups :TypedArray;
 }
 }

    {
        _creds = creds;
        _version = version;
        _bootGroups = bootGroups;

        // magic up a timezone in the format "GMT+XX:XX"
        // Of course, the sign returned from getTimezoneOffset() is wrong


import com.threerings.io.ObjectInputStream;
import com.threerings.io.ObjectOutputStream;
import com.threerings.io.TypedArray;

import com.threerings.util.StringUtil;

