public function assign($in)
	{
		$this->_massageBlockInput($in);

		if (empty($in)) {
			foreach ($this->_publicNames as $publicName) {
				$this->__unset($publicName);
			}
		}
		elseif (is_object($in)) {
			foreach ($this->_publicNames as $publicName) {
				if (isset($in->{$publicName})) {
					$this->_setByName($publicName, $in->{$publicName});
				}
				else {
					$this->__unset($publicName);
				}
			}
		}
		else {
			foreach ($this->_publicNames as $publicName) {
				if (isset($in[$publicName])) {
					$this->_setByName($publicName, $in[$publicName]);
				}
				else {
					$this->__unset($publicName);
				}
			}
		}

		$this->_checkRelatedProperties();
	}