 
         return null; // it all checks out!
     }
+
+    /** Non-simple classes that we allow, as long as they are not subclassed. */
+    protected static const VALID_CLASSES :Array = [ ByteArray, Point, Rectangle ];
 }
 }

package com.threerings.util {

import flash.net.ObjectEncoding;

import flash.system.ApplicationDomain;


            if (type == "number" || type == "string" || type == "boolean" ) {
                return null; // kosher!
            }
            if (-1 != VALID_CLASSES.indexOf(ClassUtil.getClass(value))) {
                return null; // kosher
            }
            if (!Util.isPlainObject(value)) {
                return "Non-simple properties may not be set.";
            }
            // fall through and verify the plain object's sub-properties
        }

        // check sub-properties (of arrays and objects)
