public function performSelfCheck()
	{
		$results = [];

		$results['id'] = $this->describeId();
		$results['class'] = get_class($this);
		$results['missing_methods'] = [];
		$results['errors'] = $this->errors;

		foreach ($this->describeAllMachineActions() as $a => $action) {
			foreach ($action['transitions'] as $t => $transition) {
				$transition = array_merge($action, $transition);
				$method = isset($transition['method']) ? $transition['method'] : $a;
				if (!is_callable([$this, $method])) {
					$results['missing_methods'][] = $method;
				}
			}
			sort($results['missing_methods']);
			$results['missing_methods'] = array_unique($results['missing_methods']);
		}

		$results['unreachable_states'] = $this->findUnreachableStates();

		return $results;
	}