function set ($propName, $value)
  {
    $this->ensurePropertyExists ($propName);
    $this->$propName = $this->typecastPropertyValue ($propName, $value);

    if ($this->isModified ($propName))
      $this->onPropertyChange ($propName);
  }