(function () {
    
    //*@public
    /**
        The Array controller is a proxy for array-like content. It
        has a normalized API for array functionality with the exception
        of the `[` and `]` operators (limitation of the language). Use
        of this kind allows one to have an array of data but also bind
        and observe as a normal _enyo.kind_ is also able to be abstracted
        further.
        
        Events are emitted for any add/remove actions. The events are
        _didadd_ for the _push_ and _unshift_ operations and _didremove_
        for the _pop_ and _shift_ operations.
        
        TODO: There are currently many methods missing in this partial
        implementation.
    */
    enyo.kind({
       //*@public
       name: "enyo.ArrayController",
       kind: "enyo.Controller",
       published: {
           length: 0,
           data: null
       },
       //*@protected
       create: function () {
           this.inherited(arguments);
           this.data = [];
       },
       //*@public
       push: function (value) {
           var ret = this.data.push(value);
           this.update();
           this.bubble("didadd", {value: value});
           return ret;
       },
       pop: function () {
           var ret = this.data.pop();
           this.update();
           this.bubble("didremove", {value: ret});
           return ret;
       },
       shift: function () {
           var ret = this.data.shift();
           this.update();
           this.bubble("didremove", {value: ret});
           return ret;
       },
       unshift: function (value) {
           var ret = this.data.unshift(value);
           this.update();
           this.bubble("didadd", {value: value});
           return ret;
       },
       at: function (index) {
           var ret = this.data[index];
           this.update();
           return ret;
       },
       //*@protected
       update: function () {
           if (this.length !== this.data.length) this.set("length", this.data.length);
       }
    });
    
}());
@@ -1849,44 +1849,911 @@
     
-this.update();%0A           return ret
+return ret;%0A       %7D,%0A       /**%0A           Attempt to find a particular entry based on the method%0A           passed in as _fn_. The callback will be executed under%0A           the context of the _enyo.ArrayController_ unless a context%0A           is specified as the optional second parameter. If it%0A           successfully matches a result of the callback to Boolean true%0A           it will return a hash with a _value_ and _index_ property%0A           where _value_ is the actual result and _index_ is the index%0A           of the value in the array. If no result is found it will%0A           return false.%0A       */%0A       find: function (fn, context) %7B%0A           var i = 0, len = this.length, val, ctx = context %7C%7C this;%0A           for (; i %3C len; ++i) %7B%0A               val = this.at(i);%0A               if (fn.call(ctx, val) === true) return %7Bvalue: val, index: i%7D;%0A           %7D%0A           return false
 ;%0A  

add find support to array controller