public function PreDispatch () {
		if ($this->dispatchState > 1) return $this;
		parent::PreDispatch(); // code: `if ($this->dispatchState < 1) $this->Init();` is executed by parent
		foreach ($this->fields as $field)
			// translate fields if necessary and do any rendering preparation stuff
			$field->PreDispatch();
		$session = & $this->getSession();
		foreach ($session->errors as $errorMsgAndFieldNames) {
			list($errorMsg, $fieldNames) = array_merge([], $errorMsgAndFieldNames);
			$this->AddError($errorMsg, $fieldNames);
		}
		if ($session->values) {
			foreach ($session->values as $fieldName => $fieldValue) {
				$field = $this->fields[$fieldName];
				if ($field->GetValue() === NULL)
					$field->SetValue($fieldValue);
			}
		}
		
		$viewClass = $this->viewClass;
		$this->view = $viewClass::CreateInstance()
			->SetForm($this);
		if ($this->viewScript) 
			$this->view
				->SetController($this->parentController)
				->SetView($this->parentController->GetView());
		$this->dispatchState = 2;
		return $this;
	}