public function findOneByPath($path, Workspace $workspace, array $dimensions = null, $removedNodes = false)
{
if ($path === '/') {
return $workspace->getRootNodeData();
}
$workspaces = $this->collectWorkspaceAndAllBaseWorkspaces($workspace);
$nodes = $this->findRawNodesByPath($path, $workspace, $dimensions);
$dimensions = $dimensions === null ? [] : $dimensions;
$foundNodes = $this->reduceNodeVariantsByWorkspacesAndDimensions($nodes, $workspaces, $dimensions);
$foundNodes = $this->filterNodeDataByBestMatchInContext($foundNodes, $workspace, $dimensions, $removedNodes);
$foundNodes = $this->filterRemovedNodes($foundNodes, $removedNodes);
if ($foundNodes !== []) {
return reset($foundNodes);
}
return null;
}