public function processParamsAndDepends(& $params, & $neighbouring_values, $options, $flag_params = true) {
		foreach ($params as $k => $v) {
			if (is_array($v)) continue;
			// if we have a parent
			if (strpos($v, 'parent::') !== false) { // value from parent
				$field = str_replace(['parent::', 'static::'], '', $v);
				if (!empty($this->errors['fields'][$field]['danger'])) {
					$params[$k] = null;
				} else {
					$params[$k] = $this->values[$field] ?? null;
				}
			} else if (strpos($v, 'detail::') !== false) { // if we need to grab value from detail
				$field = str_replace('detail::', '', $v);
				$params[$k] = $neighbouring_values[$field] ?? $options['options']['__detail_values'][$field] ?? null;
			} else if ($flag_params) {
				// todo process errors
				// todo process details
				if (!empty($this->fields[$v]['options']['multiple_column']) && is_array(current($neighbouring_values[$v] ?? []))) {
					$params[$k] = array_extract_values_by_key($neighbouring_values[$v] ?? [], $this->fields[$v]['options']['multiple_column']);
				} else {
					$params[$k] = $neighbouring_values[$v] ?? null;
				}
			}
		}
	}