code: function SchemaArray (key, cast, options) {
    if (cast) {
      var castOptions = {};
  
      if ('Object' === cast.constructor.name) {
        if (cast.type) {
          // support { type: Woot }
          castOptions = cast;
          cast = cast.type;
          delete castOptions.type;
        } else {
          cast = Mixed;
        }
      }
  
      var caster = cast.name in Types ? Types[cast.name] : cast;
      this.casterConstructor = caster;
      this.caster = new caster(null, castOptions);
    }
  
    SchemaType.call(this, key, options);
  
    var self = this
      , defaultArr
      , fn;
  
    if (this.defaultValue) {
      defaultArr = this.defaultValue;
      fn = 'function' == typeof defaultArr;
    }
  
    this.default(function(){
      var arr = fn ? defaultArr() : defaultArr || [];
      return new NeopreneArray(arr, self.path, this);
    });
  }
docs: , Query = require('../query') , isNeopreneObject = require('../utils').isNeopreneObject 
  Array SchemaType constructor
  
  @param {String} key
  @param {SchemaType} cast
  @param {Object} options
  @inherits SchemaType
  @api private