private static string ResolveAreaName(string pageName)
{
if (pageName != pageName.AsciiOnly(' ').CleanWhitespaces())
throw new ArgumentException($"Area name '{pageName}' does not look well-formed.");
var parts = pageName.Split(new[] { ' ' }, 2);
if (parts.Length != 2)
throw new ArgumentException($"Page name '{pageName}' does not look well-formed.");
var name = parts[0];
var type = parts[1];
if (type != "area")
throw new InvalidOperationException($"Invalid area name '{pageName}'.");
return name;
}