>>>
var overlapping = _directories.keys.where((directory) =>
    path.isWithin(directory, rootDirectory) ||
    path.isWithin(rootDirectory, directory)).toList();
<<<
var overlapping = _directories.keys
    .where((directory) => path.isWithin(directory, rootDirectory) ||
        path.isWithin(rootDirectory, directory))
    .toList();
>>>
return isLoopback(server.address.host) == isLoopback(url.host) ||
    server.address.host == url.host;
<<<
return isLoopback(server.address.host) == isLoopback(url.host) ||
    server.address.host == url.host;