anchor.diff:                  if (arrayFindNoCase(excludeFields, element)) {
                       structDelete(arguments.object, element);
                   } else if (structKeyExists(getMetaData(arguments.object[element]),'type')) {
  -                    arguments.object[element] = this.$preJSONSerialize(arguments.object[element], depth++);
  +                    arguments.object[element] = this.$objectSanitizer(arguments.object[element], depth++);
                   } else if (getMetaData(arguments.object[element]).name == "coldfusion.runtime.Array" && arrayLen(arguments.object[element]) && structKeyExists(getMetaData(arguments.object[element][1]),'type')) {
                       for (var k=1; k<=arrayLen(arguments.object[element]);k++) {
  -                        arguments.object[element][k] = this.$preJSONSerialize(arguments.object[element][k], depth);
  +                        arguments.object[element][k] = this.$objectSanitizer(arguments.object[element][k], depth);
                       }
                   }
               }
  
positive.code:         if (isArray(arguments.object) && arrayLen(arguments.object)) {
              depth++;
              for (var i=1; i<=arrayLen(arguments.object);i++) {
                  arguments.object[i] = this.$preJSONSerialize(arguments.object[i], depth);
              }
          } else {
              var keyList = structKeyArray(arguments.object);
  
negative.code:         return this;
      }
  
      /**
      * @hint provides a method for Models to exclude fields
          usage:
              excludeFields(['hashedpassword','lastipaddress']);
      */
      function excludeFields(required array fieldlist) {
          var metadata = GetMetaData(this);
          lock name="metadata.excludeFields" timeout="10"{
  