ember-runtime.js
function() {
    if (Ember.Freezable && Ember.Freezable.detect(this)) {
      return get(this, 'isFrozen') ? this : this.copy().freeze();
    } else {
      throw new Error(Ember.String.fmt("%@ does not support freezing", [this]));
    }
  }
function() {
    if (Ember.Freezable && Ember.Freezable.detect(this)) {
      return get(this, 'isFrozen') ? this : this.copy().freeze();
    } else {
      throw new Error(Ember.String.fmt("%@ does not support freezing", [this]));
    }
  }
function ( ) { if ( Ember . Freezable && Ember . Freezable . detect ( this ) ) { return get ( this , 'isFrozen' ) ? this : this . copy ( ) . freeze ( ) ; } else { throw new Error ( Ember . String . fmt ( "%@ does not support freezing" , [ this ] ) ) ; } }
If the object implements `Ember.Freezable`, then this will return a new
copy if the object is not frozen and the receiver if the object is frozen.

Raises an exception if you try to call this method on a object that does
not support freezing.

You should use this method whenever you want a copy of a freezable object
since a freezable object can simply return itself without actually
consuming more memory.

@method frozenCopy
@return {Object} copy of receiver or receiver
If the object implements Ember . Freezable then this will return a new copy if the object is not frozen and the receiver if the object is frozen .