### Adding support for a new version of Chromium DevTools Protocol to the .NET bindings

To add support for a new version of the Chromium DevTools Protocol to the .NET bindings,
perform the following steps, where `<N>` is the major version of the protocol:

1. Add the new version string (`v<N>`) to the `SUPPORTED_DEVTOOLS_VERSIONS` list in
[`//dotnet:selenium-dotnet-version.bzl`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/selenium-dotnet-version.bzl).
2. Create a new directory at `//dotnet/src/webdriver/DevTools/v<N>`, and copy the
contents of the `//dotnet/src/webdriver/DevTools/v<N-1>` directory into it.
3. Rename each of the `*.cs` files in `//dotnet/src/webdriver/DevTools/v<N>` so that
the file names start with `V<N>` instead of `V<N-1>`.
4. In each of the `*.cs` files in `//dotnet/src/webdriver/DevTools/v<N>`, update all
occurrences of `V<N-1>` to `V<N>`. **IMPORTANT:** Do _not_ change the case of `V<N>` in
each `.cs` file.
5. In [`//dotnet/src/webdriver/DevTools/DevToolsDomains.cs`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/src/webdriver/DevTools/DevToolsDomains.cs),
add an entry for version `<N>` to the `SupportedDevToolsVersions` dictionary initialization.
6. In [`//dotnet/src/webdriver:WebDriver.csproj.prebuild.cmd`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/src/webdriver/WebDriver.csproj.prebuild.cmd),
add the following block (substituting the proper value for `<N>`):

```bash
if not exist  "%1..\..\..\bazel-bin\dotnet\src\webdriver\cdp\v<N>\DevToolsSessionDomains.cs" (
  echo Generating CDP code for version <N>
  pushd "%1..\..\.."
  bazel build //dotnet/src/webdriver/cdp:generate-v<N>
  popd
)
```

7. In [`//dotnet/src/webdriver:WebDriver.csproj.prebuild.sh`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/src/webdriver/WebDriver.csproj.prebuild.sh),
add the following block (substituting the proper value for `<N>`):

```bash
if [[ ! -f "$1../../../bazel-bin/dotnet/src/webdriver/cdp/v<N>/DevToolsSessionDomains.cs" ]]
then
  echo "Generating CDP code for version <N>"
  bazel build //dotnet/src/webdriver/cdp:generate-v<N>
fi
```

8. In each of the `*.cs` files in `//dotnet/test/common/DevTools/`, update all
      occurrences of `V<N-2>` to `V<N-1>`. For now, due to issues with timeliness of CI tool
      updates, we keep this one version behind the latest.
9. Commit the changes.

### Removing support for a version of Chromium DevTools Protocol from the .NET bindings

To remove support for a version of the Chromium DevTools Protocol from the .NET bindings,
perform the following steps, where `<N>` is the major version of the protocol:

1. Delete the contents of the `//dotnet/src/webdriver/DevTools/v<N>` directory.
2. In [`//dotnet/src/webdriver/DevTools/DevToolsDomains.cs`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/src/webdriver/DevTools/DevToolsDomains.cs),
remove the entry for version `<N>` from the `SupportedDevToolsVersions` dictionary initialization.
3. Remove the version string (`v<N>`) from the `SUPPORTED_DEVTOOLS_VERSIONS` list in
[`//dotnet:selenium-dotnet-version.bzl`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/selenium-dotnet-version.bzl).
4. Commit the changes.
