internal static int GetRootLength(ReadOnlySpan <char> path) { int length = path.Length; int index = 0; bool flag1 = PathInternal.IsDevice(path); bool flag2 = flag1 && PathInternal.IsDeviceUNC(path); if (!flag1 | flag2 && length > 0 && PathInternal.IsDirectorySeparator(path[0])) { if (flag2 || length > 1 && PathInternal.IsDirectorySeparator(path[1])) { index = flag2 ? 8 : 2; int num = 2; while (index < length && (!PathInternal.IsDirectorySeparator(path[index]) || --num > 0)) { ++index; } } else { index = 1; } } else if (flag1) { index = 4; while (index < length && !PathInternal.IsDirectorySeparator(path[index])) { ++index; } if (index < length && index > 4 && PathInternal.IsDirectorySeparator(path[index])) { ++index; } } else if (length >= 2 && path[1] == ':' && PathInternal.IsValidDriveChar(path[0])) { index = 2; if (length > 2 && PathInternal.IsDirectorySeparator(path[2])) { ++index; } } return(index); }