/**
  `RSVP.cast` returns the same promise if that promise shares a constructor
  with the promise being casted.

  Example:
  ```javascript
  var promise = RSVP.resolve(1);
  var casted = RSVP.Promise.cast(promise);

  console.log(promise === casted); // true
  ```

  In the case of a promise whose constructor does not match, it is assimilated.
  It may fulfill or reject based on the outcome of the promise being casted.

  In the case of a non-promise, a promise which will fulfill with that value is
  returned.

  Example:
  ```javascript
  var value = 1; // could be a number, boolean, string, undefined...
  var casted = RSVP.Promise.cast(value);

  console.log(value === casted); // false
  console.log(casted instanceof RSVP.Promise) // true

  casted.then(function(val) {
    val === value // => true
  });
  ```

  @method cast
  @for RSVP
  @param {Object} object to be casted
  @return {Promise} promise that is fulfilled when all properties of `promises`
  have been fulfilled, or rejected if any of them become rejected.
*/


function cast(object) {
  /*jshint validthis:true */
  if (object && typeof object === 'object' && object.constructor === this) {
    return object;
  }

  var Promise = this;

  return new Promise(function(resolve) {
    resolve(object);
  });
}

export { cast };

@@ -347,14 +347,34 @@
 .%0A  
-It may
+The resulting promise will
  ful
@@ -411,24 +411,26 @@
 tcome of the
+%0A 
  promise bei

change wording to -The resulting promise-