       do (name, default_value) =>
         value = this.prototype.props[name]
         if not value?
-          throw new Error("attempted to override property '#{this.name}.#{name}' (which wasn't defined)")
+          throw new Error("attempted to override nonexistent '#{this.name}.#{name}'")
         props = _.clone(this.prototype.props)
         props[name] = _.extend({}, value, { default_value: default_value })
         this.prototype.props = props


    if options.parse
      attrs = this.parse(attrs, options) || {}
    defaults = _.result(this, 'defaults')
    this.set(defaults, { defaults: true })

    # Bokeh specific
    this._set_after_defaults = {}

    # make this a no-op, we sync the whole document never individual models
    return options.success(model.attributes, null, {})

  defaults: -> throw new Error("don't use HasProps.defaults anymore")

  # TODO remove this, for now it's just to help find nonserializable_attribute_names we
  # need to add.
