code: function expand(property, value, recurse) {
      ASSERT(arguments.length, 'property argument is required');
  
      if (arguments.length < 3) {
          if (typeof value === 'boolean') {
              recurse = value;
              value = undefined;
          } else {
              recurse = true;
          }
      }
  
      var undefvalue = typeof value === 'undefined';
  
      return undefvalue?
          expandAsArray(property, recurse)
          : expandAsObject(property, value, recurse);
  }
docs: Expand a property to an array of parts or property and value to object
  
  @param {string} property
  @param {?string} value
  @param {?boolean} recurse
  @returns {Array|Object}