anchor.diff:      }
   
   
  -    public function $preJSONSerialize(object, depth=1) {
  +    /**
  +    * @hint loop through and remove fields from moels.
  +    */
  +    private function $objectSanitizer(object, depth=1) {
           if (depth >= 7) {
               return arguments.object;
           }
  
positive.code:                 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++);
                  } 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);
                      }
                  }
              }
  
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"{
  