public void WriteObjects(PackUnpackable[] v)
 {
     if (v==null){
         WriteInt(-1);
     }else{
         WriteInt(v.Length);
         foreach (PackUnpackable b in v){
             WriteObject(b);
         }
     }
 }
    public void WriteObject(PackUnpackable o)
    {
        if (o==null){
            WriteBool(false);
            return;
        }

        WriteBool(true);
        WriteString(o.GetType().FullName);
        o.Pack(this);
    }