code: public function replace($in): void
  	{
  		$this->_massageBlockInput($in);
  
  		if (empty($in)) {
  			return;
  		}
  
  		foreach ($in as $k => $v) {
  			if ($this->_keyExists($k)) {
  				if ($this->{$k} instanceof TypedAbstract) {
  					$this->{$k}->replace($v);
  				}
  				else {
  					$this->_setByName($k, $v);
  				}
  			}
  		}
  
  		$this->_checkRelatedProperties();
  	}
docs: Deep replace local values with matches from input.
  
  Copies all matching property names while maintaining original types and
  doing a deep copy where appropriate.
  This method silently ignores extra properties in $input,
  leaves unmatched properties in this class untouched, and
  skips names starting with an underscore.
  
  Input can be an object, or an indexed or associative array.
  
  @param object|array|string|bool|null $in
  
  @return void