You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2020/11/21 09:06:54 UTC

[lucenenet] 05/05: Generated workflow files for each test project to run on GitHub Actions during pull requests

This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit b5e1958cf9b5cb9a9b10eec0c3a4adc6172dfc78
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Fri Nov 20 23:12:38 2020 +0700

    Generated workflow files for each test project to run on GitHub Actions during pull requests
---
 .../workflows/Lucene-Net-Tests-Analysis-Common.yml | 104 +++++++++++++++++
 .../Lucene-Net-Tests-Analysis-Kuromoji.yml         | 105 ++++++++++++++++++
 .../Lucene-Net-Tests-Analysis-Morfologik.yml       | 105 ++++++++++++++++++
 .../Lucene-Net-Tests-Analysis-OpenNLP.yml          | 109 ++++++++++++++++++
 .../Lucene-Net-Tests-Analysis-Phonetic.yml         | 105 ++++++++++++++++++
 .../Lucene-Net-Tests-Analysis-SmartCn.yml          | 109 ++++++++++++++++++
 .../Lucene-Net-Tests-Analysis-Stempel.yml          | 105 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Benchmark.yml   | 115 +++++++++++++++++++
 .../workflows/Lucene-Net-Tests-Classification.yml  | 106 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Cli.yml         | 123 +++++++++++++++++++++
 .../workflows/Lucene-Net-Tests-CodeAnalysis.yml    | 104 +++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Codecs.yml      | 104 +++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Demo.yml        | 112 +++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Expressions.yml | 106 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Facet.yml       | 108 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Grouping.yml    | 106 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Highlighter.yml | 107 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-ICU.yml         | 110 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Join.yml        | 107 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Memory.yml      | 108 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Misc.yml        | 105 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Queries.yml     | 105 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-QueryParser.yml | 107 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Replicator.yml  | 110 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Sandbox.yml     | 105 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Spatial.yml     | 106 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-Suggest.yml     | 107 ++++++++++++++++++
 ...Net-Tests-TestFramework-DependencyInjection.yml | 104 +++++++++++++++++
 .../workflows/Lucene-Net-Tests-TestFramework.yml   | 104 +++++++++++++++++
 .github/workflows/Lucene-Net-Tests-_A-D.yml        | 110 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-_E-I.yml        | 110 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-_I-J.yml        | 110 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-_J-S.yml        | 110 ++++++++++++++++++
 .github/workflows/Lucene-Net-Tests-_T-Z.yml        | 110 ++++++++++++++++++
 34 files changed, 3661 insertions(+)

diff --git a/.github/workflows/Lucene-Net-Tests-Analysis-Common.yml b/.github/workflows/Lucene-Net-Tests-Analysis-Common.yml
new file mode 100644
index 0000000..5aaef07
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Analysis-Common.yml
@@ -0,0 +1,104 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Analysis.Common'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Analysis.Common/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Analysis.Common/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Analysis.Common/Lucene.Net.Tests.Analysis.Common.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Analysis-Kuromoji.yml b/.github/workflows/Lucene-Net-Tests-Analysis-Kuromoji.yml
new file mode 100644
index 0000000..5c3dc42
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Analysis-Kuromoji.yml
@@ -0,0 +1,105 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Analysis.Kuromoji'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Analysis.Kuromoji/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Analysis.Kuromoji/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Analysis.Kuromoji/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Analysis.Kuromoji/Lucene.Net.Tests.Analysis.Kuromoji.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Analysis-Morfologik.yml b/.github/workflows/Lucene-Net-Tests-Analysis-Morfologik.yml
new file mode 100644
index 0000000..17e94b6
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Analysis-Morfologik.yml
@@ -0,0 +1,105 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Analysis.Morfologik'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Analysis.Morfologik/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Analysis.Morfologik/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Analysis.Morfologik/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Analysis.Morfologik/Lucene.Net.Tests.Analysis.Morfologik.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Analysis-OpenNLP.yml b/.github/workflows/Lucene-Net-Tests-Analysis-OpenNLP.yml
new file mode 100644
index 0000000..98a5a0c
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Analysis-OpenNLP.yml
@@ -0,0 +1,109 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Analysis.OpenNLP'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Analysis.OpenNLP/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Analysis.OpenNLP/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Memory/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Highlighter/**/*'
+    - 'src/dotnet/Lucene.Net.ICU/**/*'
+    - 'src/Lucene.Net.Analysis.OpenNLP/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Analysis.OpenNLP/Lucene.Net.Tests.Analysis.OpenNLP.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Analysis-Phonetic.yml b/.github/workflows/Lucene-Net-Tests-Analysis-Phonetic.yml
new file mode 100644
index 0000000..63263ca
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Analysis-Phonetic.yml
@@ -0,0 +1,105 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Analysis.Phonetic'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Analysis.Phonetic/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Analysis.Phonetic/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Analysis.Phonetic/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Analysis.Phonetic/Lucene.Net.Tests.Analysis.Phonetic.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Analysis-SmartCn.yml b/.github/workflows/Lucene-Net-Tests-Analysis-SmartCn.yml
new file mode 100644
index 0000000..e3fad2d
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Analysis-SmartCn.yml
@@ -0,0 +1,109 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Analysis.SmartCn'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Analysis.SmartCn/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Analysis.SmartCn/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Memory/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Highlighter/**/*'
+    - 'src/dotnet/Lucene.Net.ICU/**/*'
+    - 'src/Lucene.Net.Analysis.SmartCn/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Analysis.SmartCn/Lucene.Net.Tests.Analysis.SmartCn.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Analysis-Stempel.yml b/.github/workflows/Lucene-Net-Tests-Analysis-Stempel.yml
new file mode 100644
index 0000000..73267b0
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Analysis-Stempel.yml
@@ -0,0 +1,105 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Analysis.Stempel'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Analysis.Stempel/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Analysis.Stempel/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Analysis.Stempel/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Analysis.Stempel/Lucene.Net.Tests.Analysis.Stempel.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Benchmark.yml b/.github/workflows/Lucene-Net-Tests-Benchmark.yml
new file mode 100644
index 0000000..872644e
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Benchmark.yml
@@ -0,0 +1,115 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Benchmark'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Benchmark/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Benchmark/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Memory/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Highlighter/**/*'
+    - 'src/dotnet/Lucene.Net.ICU/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.Spatial/**/*'
+    - 'src/Lucene.Net.Benchmark/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Benchmark/Lucene.Net.Tests.Benchmark.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Classification.yml b/.github/workflows/Lucene-Net-Tests-Classification.yml
new file mode 100644
index 0000000..80f4533
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Classification.yml
@@ -0,0 +1,106 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Classification'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Classification/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Classification/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Classification/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Classification/Lucene.Net.Tests.Classification.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Cli.yml b/.github/workflows/Lucene-Net-Tests-Cli.yml
new file mode 100644
index 0000000..4c96c79
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Cli.yml
@@ -0,0 +1,123 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Cli'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/dotnet/tools/Lucene.Net.Tests.Cli/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/dotnet/tools/Lucene.Net.Tests.Cli/Directory.Build.*'
+    - 'src/dotnet/tools/Directory.Build.*'
+    - 'src/dotnet/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Analysis.Kuromoji/**/*'
+    - 'src/Lucene.Net.Analysis.Stempel/**/*'
+    - 'src/Lucene.Net.Memory/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Highlighter/**/*'
+    - 'src/dotnet/Lucene.Net.ICU/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.Spatial/**/*'
+    - 'src/Lucene.Net.Benchmark/**/*'
+    - 'src/Lucene.Net.Expressions/**/*'
+    - 'src/Lucene.Net.Demo/**/*'
+    - 'src/Lucene.Net.Misc/**/*'
+    - 'src/dotnet/tools/lucene-cli/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [netcoreapp3.1]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/dotnet/tools/Lucene.Net.Tests.Cli/Lucene.Net.Tests.Cli.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-CodeAnalysis.yml b/.github/workflows/Lucene-Net-Tests-CodeAnalysis.yml
new file mode 100644
index 0000000..a7fd8e1
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-CodeAnalysis.yml
@@ -0,0 +1,104 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.CodeAnalysis'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/dotnet/Lucene.Net.Tests.CodeAnalysis/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/dotnet/Lucene.Net.Tests.CodeAnalysis/Directory.Build.*'
+    - 'src/dotnet/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/dotnet/Lucene.Net.CodeAnalysis.CSharp/**/*'
+    - 'src/dotnet/Lucene.Net.CodeAnalysis.VisualBasic/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/dotnet/Lucene.Net.Tests.CodeAnalysis/Lucene.Net.Tests.CodeAnalysis.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Codecs.yml b/.github/workflows/Lucene-Net-Tests-Codecs.yml
new file mode 100644
index 0000000..e993b74
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Codecs.yml
@@ -0,0 +1,104 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Codecs'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Codecs/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Codecs/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Codecs/Lucene.Net.Tests.Codecs.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Demo.yml b/.github/workflows/Lucene-Net-Tests-Demo.yml
new file mode 100644
index 0000000..4f43f2b
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Demo.yml
@@ -0,0 +1,112 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Demo'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Demo/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Demo/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Expressions/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.Demo/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Demo/Lucene.Net.Tests.Demo.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Expressions.yml b/.github/workflows/Lucene-Net-Tests-Expressions.yml
new file mode 100644
index 0000000..d71b444
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Expressions.yml
@@ -0,0 +1,106 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Expressions'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Expressions/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Expressions/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Expressions/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Expressions/Lucene.Net.Tests.Expressions.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Facet.yml b/.github/workflows/Lucene-Net-Tests-Facet.yml
new file mode 100644
index 0000000..fd8f315
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Facet.yml
@@ -0,0 +1,108 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Facet'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Facet/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Facet/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Facet/Lucene.Net.Tests.Facet.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Grouping.yml b/.github/workflows/Lucene-Net-Tests-Grouping.yml
new file mode 100644
index 0000000..12fe470
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Grouping.yml
@@ -0,0 +1,106 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Grouping'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Grouping/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Grouping/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Grouping/Lucene.Net.Tests.Grouping.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Highlighter.yml b/.github/workflows/Lucene-Net-Tests-Highlighter.yml
new file mode 100644
index 0000000..1619770
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Highlighter.yml
@@ -0,0 +1,107 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Highlighter'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Highlighter/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Highlighter/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Memory/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Highlighter/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Highlighter/Lucene.Net.Tests.Highlighter.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-ICU.yml b/.github/workflows/Lucene-Net-Tests-ICU.yml
new file mode 100644
index 0000000..267dc46
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-ICU.yml
@@ -0,0 +1,110 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.ICU'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/dotnet/Lucene.Net.Tests.ICU/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/dotnet/Lucene.Net.Tests.ICU/Directory.Build.*'
+    - 'src/dotnet/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Memory/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Highlighter/**/*'
+    - 'src/dotnet/Lucene.Net.ICU/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+    - 'src/Lucene.Net.Tests.Analysis.Common/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/dotnet/Lucene.Net.Tests.ICU/Lucene.Net.Tests.ICU.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Join.yml b/.github/workflows/Lucene-Net-Tests-Join.yml
new file mode 100644
index 0000000..7342c13
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Join.yml
@@ -0,0 +1,107 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Join'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Join/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Join/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Join/Lucene.Net.Tests.Join.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Memory.yml b/.github/workflows/Lucene-Net-Tests-Memory.yml
new file mode 100644
index 0000000..037166b
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Memory.yml
@@ -0,0 +1,108 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Memory'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Memory/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Memory/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Memory/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Memory/Lucene.Net.Tests.Memory.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Misc.yml b/.github/workflows/Lucene-Net-Tests-Misc.yml
new file mode 100644
index 0000000..7fd5978
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Misc.yml
@@ -0,0 +1,105 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Misc'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Misc/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Misc/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Misc/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Misc/Lucene.Net.Tests.Misc.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Queries.yml b/.github/workflows/Lucene-Net-Tests-Queries.yml
new file mode 100644
index 0000000..c5bdc81
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Queries.yml
@@ -0,0 +1,105 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Queries'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Queries/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Queries/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Queries/Lucene.Net.Tests.Queries.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-QueryParser.yml b/.github/workflows/Lucene-Net-Tests-QueryParser.yml
new file mode 100644
index 0000000..e21b777
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-QueryParser.yml
@@ -0,0 +1,107 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.QueryParser'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.QueryParser/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.QueryParser/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.QueryParser/Lucene.Net.Tests.QueryParser.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Replicator.yml b/.github/workflows/Lucene-Net-Tests-Replicator.yml
new file mode 100644
index 0000000..4a813cf
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Replicator.yml
@@ -0,0 +1,110 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Replicator'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Replicator/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Replicator/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Replicator/**/*'
+    - 'src/dotnet/Lucene.Net.Replicator.AspNetCore/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Replicator/Lucene.Net.Tests.Replicator.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Sandbox.yml b/.github/workflows/Lucene-Net-Tests-Sandbox.yml
new file mode 100644
index 0000000..c165437
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Sandbox.yml
@@ -0,0 +1,105 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Sandbox'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Sandbox/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Sandbox/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Sandbox/Lucene.Net.Tests.Sandbox.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Spatial.yml b/.github/workflows/Lucene-Net-Tests-Spatial.yml
new file mode 100644
index 0000000..354b03e
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Spatial.yml
@@ -0,0 +1,106 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Spatial'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Spatial/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Spatial/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Spatial/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Spatial/Lucene.Net.Tests.Spatial.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-Suggest.yml b/.github/workflows/Lucene-Net-Tests-Suggest.yml
new file mode 100644
index 0000000..96ac7ff
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-Suggest.yml
@@ -0,0 +1,107 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.Suggest'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.Suggest/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.Suggest/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Misc/**/*'
+    - 'src/Lucene.Net.Suggest/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.Suggest/Lucene.Net.Tests.Suggest.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-TestFramework-DependencyInjection.yml b/.github/workflows/Lucene-Net-Tests-TestFramework-DependencyInjection.yml
new file mode 100644
index 0000000..9dfd3db
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-TestFramework-DependencyInjection.yml
@@ -0,0 +1,104 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.TestFramework.DependencyInjection'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.TestFramework.DependencyInjection/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.TestFramework.DependencyInjection/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.TestFramework.DependencyInjection/Lucene.Net.Tests.TestFramework.DependencyInjection.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-TestFramework.yml b/.github/workflows/Lucene-Net-Tests-TestFramework.yml
new file mode 100644
index 0000000..dc4f12f
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-TestFramework.yml
@@ -0,0 +1,104 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests.TestFramework'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests.TestFramework/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests.TestFramework/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests.TestFramework/Lucene.Net.Tests.TestFramework.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-_A-D.yml b/.github/workflows/Lucene-Net-Tests-_A-D.yml
new file mode 100644
index 0000000..bfda6d3
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-_A-D.yml
@@ -0,0 +1,110 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests._A-D'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests._A-D/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests._A-D/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests._A-D/Lucene.Net.Tests._A-D.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-_E-I.yml b/.github/workflows/Lucene-Net-Tests-_E-I.yml
new file mode 100644
index 0000000..7d10a84
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-_E-I.yml
@@ -0,0 +1,110 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests._E-I'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests._E-I/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests._E-I/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests._E-I/Lucene.Net.Tests._E-I.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-_I-J.yml b/.github/workflows/Lucene-Net-Tests-_I-J.yml
new file mode 100644
index 0000000..3cd4533
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-_I-J.yml
@@ -0,0 +1,110 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests._I-J'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests._I-J/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests._I-J/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests._I-J/Lucene.Net.Tests._I-J.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-_J-S.yml b/.github/workflows/Lucene-Net-Tests-_J-S.yml
new file mode 100644
index 0000000..b3a93af
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-_J-S.yml
@@ -0,0 +1,110 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests._J-S'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests._J-S/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests._J-S/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests._J-S/Lucene.Net.Tests._J-S.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+
diff --git a/.github/workflows/Lucene-Net-Tests-_T-Z.yml b/.github/workflows/Lucene-Net-Tests-_T-Z.yml
new file mode 100644
index 0000000..61334de
--- /dev/null
+++ b/.github/workflows/Lucene-Net-Tests-_T-Z.yml
@@ -0,0 +1,110 @@
+####################################################################################
+# DO NOT EDIT: This file was automatically generated by Generate-TestWorkflows.ps1
+####################################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Lucene.Net.Tests._T-Z'
+
+on:
+  workflow_dispatch:
+  pull_request:
+    paths:
+    - 'src/Lucene.Net.Tests._T-Z/**/*'
+    - 'build/Dependencies.props'
+    - 'build/TestReferences.Common.*'
+    - 'TestTargetFrameworks.*'
+    - '*.sln'
+    - 'src/Lucene.Net.Tests._T-Z/Directory.Build.*'
+    - 'src/Directory.Build.*'
+    - 'Directory.Build.*'
+
+    # Dependencies
+    - 'src/Lucene.Net/**/*'
+    - 'src/Lucene.Net.Codecs/**/*'
+    - 'src/Lucene.Net.Queries/**/*'
+    - 'src/Lucene.Net.Grouping/**/*'
+    - 'src/Lucene.Net.Join/**/*'
+    - 'src/Lucene.Net.Facet/**/*'
+    - 'src/Lucene.Net.Analysis.Common/**/*'
+    - 'src/Lucene.Net.Sandbox/**/*'
+    - 'src/Lucene.Net.QueryParser/**/*'
+    - 'src/Lucene.Net.TestFramework/**/*'
+
+    - '!**/*.md'
+
+jobs:
+
+  Test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-latest, ubuntu-latest]
+        framework: [net5.0, netcoreapp2.1, net48]
+        platform: [x64]
+        configuration: [Release]
+        exclude:
+          - os: ubuntu-latest
+            framework: net48
+          - os: macos-latest
+            framework: net48
+    env:
+      project_path: './src/Lucene.Net.Tests._T-Z/Lucene.Net.Tests._T-Z.csproj'
+      trx_file_name: 'TestResults.trx'
+      md_file_name: 'TestResults.md' # Report file name for LiquidTestReports.Markdown
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Setup .NET 3.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '3.1.404'
+        if: ${{ startswith(matrix.framework, 'netcoreapp3.') }}
+
+      - name: Setup .NET 2.1 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '2.1.811'
+        if: ${{ startswith(matrix.framework, 'netcoreapp2.') }}
+
+      - name: Setup .NET 5 SDK
+        uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: '5.0.100'
+
+      - run: |
+          $project_name = [System.IO.Path]::GetFileNameWithoutExtension($env:project_path)
+          $test_results_artifact_name = "testresults_${{matrix.os}}_${{matrix.framework}}_${{matrix.platform}}_${{matrix.configuration}}"
+          Write-Host "Project Name: $project_name"
+          Write-Host "Results Artifact Name: $test_results_artifact_name"
+          echo "project_name=$project_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          echo "test_results_artifact_name=$test_results_artifact_name" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+          # Title for LiquidTestReports.Markdown
+          echo "title=Test Run for $project_name - ${{matrix.framework}} - ${{matrix.platform}} - ${{matrix.os}}" | Out-File -FilePath  $env:GITHUB_ENV -Encoding utf8 -Append
+        shell: pwsh
+      - run: dotnet build ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} /p:TestFrameworks=true
+      - run: dotnet test ${{env.project_path}} --configuration ${{matrix.configuration}} --framework ${{matrix.framework}} --no-build --no-restore --logger:"console;verbosity=normal" --logger:"trx;LogFileName=${{env.trx_file_name}}" --logger:"liquid.md;LogFileName=${{env.md_file_name}};Title=${{env.title}};" --results-directory:"${{github.workspace}}/${{env.test_results_artifact_name}}/${{env.project_name}}" -- RunConfiguration.TargetPlatform=${{matrix.platform}}
+      # upload reports as build artifacts
+      - name: Upload a Build Artifact
+        uses: actions/upload-artifact@v2
+        if: ${{always()}}
+        with:
+          name: '${{env.test_results_artifact_name}}'
+          path: '${{github.workspace}}/${{env.test_results_artifact_name}}'
+