diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart
index 95f92f4..41c1dcb 100644
--- a/packages/pigeon/lib/dart_generator.dart
+++ b/packages/pigeon/lib/dart_generator.dart
@@ -137,8 +137,8 @@
               final String emptyReturnStatement = isMockHandler
                   ? 'return <Object$nullTag, Object$nullTag>{};'
                   : func.returnType == 'void'
-                  ? 'return;'
-                  : 'return null;';
+                      ? 'return;'
+                      : 'return null;';
               String call;
               if (argType == 'void') {
                 indent.writeln('// ignore message');
diff --git a/packages/pigeon/run_tests.sh b/packages/pigeon/run_tests.sh
index d99e2e4..bc6ce58 100755
--- a/packages/pigeon/run_tests.sh
+++ b/packages/pigeon/run_tests.sh
@@ -1,3 +1,4 @@
+#!/bin/bash
 ###############################################################################
 # run_tests.sh
 #
@@ -6,22 +7,7 @@
 ###############################################################################
 
 # exit when any command fails
-set -ex
-
-JAVA_LINTER=checkstyle-8.41-all.jar
-JAVA_FORMATTER=google-java-format-1.3-all-deps.jar
-GOOGLE_CHECKS=google_checks.xml
-GOOGLE_CHECKS_VERSION=7190c47ca5515ad8cb827bc4065ae7664d2766c1
-JAVA_ERROR_PRONE=error_prone_core-2.5.1-with-dependencies.jar
-DATAFLOW_SHADED=dataflow-shaded-3.7.1.jar
-JFORMAT_STRING=jFormatString-3.0.0.jar
-JAVA_VERSION=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
-JAVAC_JAR=javac-9+181-r4173-1.jar
-if [ $JAVA_VERSION == "8" ]; then
-  JAVAC_BOOTCLASSPATH="-J-Xbootclasspath/p:ci/$JAVAC_JAR"
-else
-  JAVAC_BOOTCLASSPATH=
-fi
+set -e
 
 # TODO(blasten): Enable on stable when possible.
 # https://github.com/flutter/flutter/issues/75187
@@ -36,8 +22,23 @@
 flutter_bin=$(dirname $flutter)
 framework_path="$flutter_bin/cache/artifacts/engine/ios/"
 
+java_linter=checkstyle-8.41-all.jar
+java_formatter=google-java-format-1.3-all-deps.jar
+google_checks=google_checks.xml
+google_checks_version=7190c47ca5515ad8cb827bc4065ae7664d2766c1
+java_error_prone=error_prone_core-2.5.1-with-dependencies.jar
+dataflow_shaded=dataflow-shaded-3.7.1.jar
+jformat_string=jFormatString-3.0.0.jar
+java_version=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
+javac_jar=javac-9+181-r4173-1.jar
+if [ $java_version == "8" ]; then
+  javac_bootclasspath="-J-Xbootclasspath/p:ci/$javac_jar"
+else
+  javac_bootclasspath=
+fi
+
 ###############################################################################
-# Functions
+# Helper Functions
 ###############################################################################
 
 # Create a temporary directory in a way that works on both Linux and macOS.
@@ -49,9 +50,10 @@
 
 # test_pigeon_ios(<path to pigeon file>)
 #
-# Compiles the pigeon file to a temp directory and attempts to compile the code
-# and runs the dart analyzer on the generated dart code.
+# Compiles the pigeon file to a temp directory and attempts to compile the objc
+# code.
 test_pigeon_ios() {
+  echo "test_pigeon_ios($1)"
   temp_dir=$(mktmpdir)
 
   pub run pigeon \
@@ -76,8 +78,10 @@
 
 # test_pigeon_android(<path to pigeon file>)
 #
-# Compiles the pigeon file to a temp directory and attempts to compile the code.
+# Compiles the pigeon file to a temp directory and attempts to compile the java
+# code.
 test_pigeon_android() {
+  echo "test_pigeon_android($1)"
   temp_dir=$(mktmpdir)
 
   pub run pigeon \
@@ -86,12 +90,12 @@
     --java_out $temp_dir/Pigeon.java \
     --java_package foo
 
-  java -jar ci/$JAVA_FORMATTER --replace "$temp_dir/Pigeon.java"
-  java -jar ci/$JAVA_LINTER -c "ci/$GOOGLE_CHECKS" "$temp_dir/Pigeon.java"
+  java -jar ci/$java_formatter --replace "$temp_dir/Pigeon.java"
+  java -jar ci/$java_linter -c "ci/$google_checks" "$temp_dir/Pigeon.java"
   if ! javac \
-    $JAVAC_BOOTCLASSPATH \
+    $javac_bootclasspath \
     -XDcompilePolicy=simple \
-    -processorpath "ci/$JAVA_ERROR_PRONE:ci/$DATAFLOW_SHADED:ci/$JFORMAT_STRING" \
+    -processorpath "ci/$java_error_prone:ci/$dataflow_shaded:ci/$jformat_string" \
     '-Xplugin:ErrorProne -Xep:CatchingUnchecked:ERROR' \
     -classpath "$flutter_bin/cache/artifacts/engine/android-x64/flutter.jar" \
     $temp_dir/Pigeon.java; then
@@ -99,182 +103,327 @@
     exit 1
   fi
 
-  dartfmt -w $temp_dir/pigeon.dart
-  dartanalyzer $temp_dir/pigeon.dart --fatal-infos --fatal-warnings --packages ./e2e_tests/test_objc/.packages
-
   rm -rf $temp_dir
 }
 
 # test_null_safe_dart(<path to pigeon file>)
 #
 # Compiles the pigeon file to a temp directory and attempts to run the dart
-# analyzer on it with null safety turned on.
-test_null_safe_dart() {
-  temp_dir=$(mktmpdir)
+# analyzer on it with and without null safety turned on.
+test_pigeon_dart() {
+  echo "test_pigeon_dart($1)"
+  temp_dir_1=$(mktmpdir)
+  temp_dir_2=$(mktmpdir)
 
   pub run pigeon \
     --input $1 \
-    --dart_out $temp_dir/pigeon.dart
+    --dart_out $temp_dir_1/pigeon.dart &
+  null_safe_gen_pid=$!
 
-  dartanalyzer $temp_dir/pigeon.dart --fatal-infos --fatal-warnings --packages ./e2e_tests/test_objc/.packages
-  rm -rf $temp_dir
+  pub run pigeon \
+    --no-dart_null_safety \
+    --input $1 \
+    --dart_out $temp_dir_2/pigeon.dart &
+  non_null_safe_gen_pid=$!
+
+  wait $null_safe_gen_pid
+  wait $non_null_safe_gen_pid
+
+  # `./e2e_tests/test_objc/.packages` is used to get access to Flutter since
+  # Pigeon doesn't depend on Flutter.
+  dartanalyzer $temp_dir_1/pigeon.dart --fatal-infos --fatal-warnings --packages ./e2e_tests/test_objc/.packages &
+  null_safe_analyze_pid=$!
+  dartanalyzer $temp_dir_2/pigeon.dart --fatal-infos --fatal-warnings --packages ./e2e_tests/test_objc/.packages &
+  non_null_safe_analyze_pid=$!
+
+  wait $null_safe_analyze_pid
+  wait $non_null_safe_analyze_pid
+
+  rm -rf $temp_dir_1
+  rm -rf $temp_dir_2
+}
+
+print_usage() {
+  echo "usage: ./run_tests.sh [-l] [-t test_name]
+
+flags:
+  -t test_name: Run only specified test.
+  -l          : List available tests.
+"
 }
 
 ###############################################################################
-# Get java linter / formatter
+# Stages
 ###############################################################################
-if [ ! -f "ci/$JAVA_LINTER" ]; then
-  curl -L https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.41/$JAVA_LINTER > "ci/$JAVA_LINTER"
-fi
-if [ ! -f "ci/$JAVA_FORMATTER" ]; then
-  curl -L https://github.com/google/google-java-format/releases/download/google-java-format-1.3/$JAVA_FORMATTER > "ci/$JAVA_FORMATTER"
-fi
-if [ ! -f "ci/$GOOGLE_CHECKS" ]; then
-  curl -L https://raw.githubusercontent.com/checkstyle/checkstyle/$GOOGLE_CHECKS_VERSION/src/main/resources/$GOOGLE_CHECKS > "ci/$GOOGLE_CHECKS"
-fi
-if [ ! -f "ci/$JAVA_ERROR_PRONE" ]; then
-  curl https://repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.5.1/$JAVA_ERROR_PRONE > "ci/$JAVA_ERROR_PRONE"
-fi
-if [ ! -f "ci/$DATAFLOW_SHADED" ]; then
-  curl https://repo1.maven.org/maven2/org/checkerframework/dataflow-shaded/3.7.1/$DATAFLOW_SHADED > "ci/$DATAFLOW_SHADED"
-fi
-if [ ! -f "ci/$JFORMAT_STRING" ]; then
-  curl https://repo1.maven.org/maven2/com/google/code/findbugs/jFormatString/3.0.0/$JFORMAT_STRING > "ci/$JFORMAT_STRING"
-fi
-if [ ! -f "ci/$JAVAC_JAR" ]; then
-  curl https://repo1.maven.org/maven2/com/google/errorprone/javac/9+181-r4173-1/$JAVAC_JAR > "ci/$JAVAC_JAR"
-fi
+get_java_linter_formatter() {
+  if [ ! -f "ci/$java_linter" ]; then
+    curl -L https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.41/$java_linter >"ci/$java_linter"
+  fi
+  if [ ! -f "ci/$java_formatter" ]; then
+    curl -L https://github.com/google/google-java-format/releases/download/google-java-format-1.3/$java_formatter >"ci/$java_formatter"
+  fi
+  if [ ! -f "ci/$google_checks" ]; then
+    curl -L https://raw.githubusercontent.com/checkstyle/checkstyle/$google_checks_version/src/main/resources/$google_checks >"ci/$google_checks"
+  fi
+  if [ ! -f "ci/$java_error_prone" ]; then
+    curl https://repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.5.1/$java_error_prone >"ci/$java_error_prone"
+  fi
+  if [ ! -f "ci/$dataflow_shaded" ]; then
+    curl https://repo1.maven.org/maven2/org/checkerframework/dataflow-shaded/3.7.1/$dataflow_shaded >"ci/$dataflow_shaded"
+  fi
+  if [ ! -f "ci/$jformat_string" ]; then
+    curl https://repo1.maven.org/maven2/com/google/code/findbugs/jFormatString/3.0.0/$jformat_string >"ci/$jformat_string"
+  fi
+  if [ ! -f "ci/$javac_jar" ]; then
+    curl https://repo1.maven.org/maven2/com/google/errorprone/javac/9+181-r4173-1/$javac_jar >"ci/$javac_jar"
+  fi
+}
 
+run_dart_unittests() {
+  dart analyze bin
+  dart analyze lib
+  dart test
+}
 
-###############################################################################
-# Dart analysis and unit tests
-###############################################################################
-pub get
-dart analyze bin
-dart analyze lib
-dart test
+test_running_without_arguments() {
+  pub run pigeon 1>/dev/null
+}
 
-###############################################################################
-# Execute without arguments test
-###############################################################################
-pub run pigeon 1> /dev/null
-
-###############################################################################
-# Run unit tests on generated Dart code.
-###############################################################################
-pushd $PWD
-pub run pigeon \
+run_flutter_unittests() {
+  pushd $PWD
+  pub run pigeon \
     --input pigeons/message.dart \
     --dart_out platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart
-cd platform_tests/flutter_null_safe_unit_tests
-flutter pub get
-flutter test test/null_safe_test.dart 
-popd
+  cd platform_tests/flutter_null_safe_unit_tests
+  flutter pub get
+  flutter test test/null_safe_test.dart
+  popd
+}
 
-###############################################################################
-# Mock handler flutter tests.
-###############################################################################
-pushd $PWD
-pub run pigeon \
-  --input pigeons/message.dart \
-  --dart_out mock_handler_tester/test/message.dart \
-  --dart_test_out mock_handler_tester/test/test.dart
-dartfmt -w mock_handler_tester/test/message.dart
-dartfmt -w mock_handler_tester/test/test.dart
-cd mock_handler_tester
-flutter test
-popd
+run_mock_handler_tests() {
+  pushd $PWD
+  pub run pigeon \
+    --input pigeons/message.dart \
+    --dart_out mock_handler_tester/test/message.dart \
+    --dart_test_out mock_handler_tester/test/test.dart
+  dartfmt -w mock_handler_tester/test/message.dart
+  dartfmt -w mock_handler_tester/test/test.dart
+  cd mock_handler_tester
+  flutter test
+  popd
+}
 
-###############################################################################
-# Compilation tests (Code is generated and compiled)
-###############################################################################
-# Make sure the artifacts are present.
-flutter precache
-# Make sure flutter dependencies are available.
-pushd $PWD
-cd e2e_tests/test_objc/
-flutter pub get
-popd
-test_pigeon_ios ./pigeons/async_handlers.dart
-test_null_safe_dart ./pigeons/message.dart
-test_pigeon_android ./pigeons/voidflutter.dart
-test_pigeon_android ./pigeons/voidhost.dart
-test_pigeon_android ./pigeons/host2flutter.dart
-test_pigeon_android ./pigeons/message.dart
-test_pigeon_android ./pigeons/void_arg_host.dart
-test_pigeon_android ./pigeons/void_arg_flutter.dart
-test_pigeon_android ./pigeons/list.dart
-test_pigeon_android ./pigeons/all_datatypes.dart
-test_pigeon_android ./pigeons/async_handlers.dart
-test_pigeon_ios ./pigeons/message.dart
-test_pigeon_ios ./pigeons/host2flutter.dart
-test_pigeon_ios ./pigeons/voidhost.dart
-test_pigeon_ios ./pigeons/voidflutter.dart
-test_pigeon_ios ./pigeons/void_arg_host.dart
-test_pigeon_ios ./pigeons/void_arg_flutter.dart
-test_pigeon_ios ./pigeons/list.dart
-test_pigeon_ios ./pigeons/all_datatypes.dart
+run_dart_compilation_tests() {
+  # Make sure the artifacts are present.
+  flutter precache
+  # Make sure flutter dependencies are available.
+  pushd $PWD
+  cd e2e_tests/test_objc/
+  flutter pub get
+  popd
+  test_pigeon_dart ./pigeons/all_datatypes.dart
+  test_pigeon_dart ./pigeons/async_handlers.dart
+  test_pigeon_dart ./pigeons/host2flutter.dart
+  test_pigeon_dart ./pigeons/list.dart
+  test_pigeon_dart ./pigeons/message.dart
+  test_pigeon_dart ./pigeons/void_arg_flutter.dart
+  test_pigeon_dart ./pigeons/void_arg_host.dart
+  test_pigeon_dart ./pigeons/voidflutter.dart
+  test_pigeon_dart ./pigeons/voidhost.dart
+}
 
-###############################################################################
-# iOS unit tests on generated code.
-###############################################################################
-pub run pigeon \
-  --no-dart_null_safety \
-  --input pigeons/message.dart \
-  --dart_out /dev/null \
-  --objc_header_out platform_tests/ios_unit_tests/ios/Runner/messages.h \
-  --objc_source_out platform_tests/ios_unit_tests/ios/Runner/messages.m
-pub run pigeon \
-  --no-dart_null_safety \
-  --input pigeons/async_handlers.dart \
-  --dart_out /dev/null \
-  --objc_header_out platform_tests/ios_unit_tests/ios/Runner/async_handlers.h \
-  --objc_source_out platform_tests/ios_unit_tests/ios/Runner/async_handlers.m
-clang-format -i platform_tests/ios_unit_tests/ios/Runner/messages.h
-clang-format -i platform_tests/ios_unit_tests/ios/Runner/messages.m
-clang-format -i platform_tests/ios_unit_tests/ios/Runner/async_handlers.h
-clang-format -i platform_tests/ios_unit_tests/ios/Runner/async_handlers.m
-pushd $PWD
-cd platform_tests/ios_unit_tests
-flutter build ios --simulator
-cd ios
-xcodebuild \
+run_java_compilation_tests() {
+  # Make sure the artifacts are present.
+  flutter precache
+  # Make sure flutter dependencies are available.
+  pushd $PWD
+  # We use e2e_tests/test_objc in order to get access to Flutter.
+  cd e2e_tests/test_objc/
+  flutter pub get
+  popd
+  test_pigeon_android ./pigeons/all_datatypes.dart
+  test_pigeon_android ./pigeons/async_handlers.dart
+  test_pigeon_android ./pigeons/host2flutter.dart
+  test_pigeon_android ./pigeons/list.dart
+  test_pigeon_android ./pigeons/message.dart
+  test_pigeon_android ./pigeons/void_arg_flutter.dart
+  test_pigeon_android ./pigeons/void_arg_host.dart
+  test_pigeon_android ./pigeons/voidflutter.dart
+  test_pigeon_android ./pigeons/voidhost.dart
+}
+
+run_objc_compilation_tests() {
+  # Make sure the artifacts are present.
+  flutter precache
+
+  test_pigeon_ios ./pigeons/all_datatypes.dart
+  test_pigeon_ios ./pigeons/async_handlers.dart
+  test_pigeon_ios ./pigeons/host2flutter.dart
+  test_pigeon_ios ./pigeons/list.dart
+  test_pigeon_ios ./pigeons/message.dart
+  test_pigeon_ios ./pigeons/void_arg_flutter.dart
+  test_pigeon_ios ./pigeons/void_arg_host.dart
+  test_pigeon_ios ./pigeons/voidflutter.dart
+  test_pigeon_ios ./pigeons/voidhost.dart
+}
+
+run_ios_unittests() {
+  pub run pigeon \
+    --no-dart_null_safety \
+    --input pigeons/message.dart \
+    --dart_out /dev/null \
+    --objc_header_out platform_tests/ios_unit_tests/ios/Runner/messages.h \
+    --objc_source_out platform_tests/ios_unit_tests/ios/Runner/messages.m
+  pub run pigeon \
+    --no-dart_null_safety \
+    --input pigeons/async_handlers.dart \
+    --dart_out /dev/null \
+    --objc_header_out platform_tests/ios_unit_tests/ios/Runner/async_handlers.h \
+    --objc_source_out platform_tests/ios_unit_tests/ios/Runner/async_handlers.m
+  clang-format -i platform_tests/ios_unit_tests/ios/Runner/messages.h
+  clang-format -i platform_tests/ios_unit_tests/ios/Runner/messages.m
+  clang-format -i platform_tests/ios_unit_tests/ios/Runner/async_handlers.h
+  clang-format -i platform_tests/ios_unit_tests/ios/Runner/async_handlers.m
+  pushd $PWD
+  cd platform_tests/ios_unit_tests
+  flutter build ios --simulator
+  cd ios
+  xcodebuild \
     -workspace Runner.xcworkspace \
     -scheme RunnerTests \
     -sdk iphonesimulator \
     -destination 'platform=iOS Simulator,name=iPhone 8' \
     test
-popd
+  popd
+}
+
+run_ios_e2e_tests() {
+  DARTLE_H="e2e_tests/test_objc/ios/Runner/dartle.h"
+  DARTLE_M="e2e_tests/test_objc/ios/Runner/dartle.m"
+  DARTLE_DART="e2e_tests/test_objc/lib/dartle.dart"
+  PIGEON_JAVA="e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java"
+  pub run pigeon \
+    --input pigeons/message.dart \
+    --dart_out $DARTLE_DART \
+    --objc_header_out $DARTLE_H \
+    --objc_source_out $DARTLE_M \
+    --java_out $PIGEON_JAVA
+  dartfmt -w $DARTLE_DART
+
+  pushd $PWD
+  cd e2e_tests/test_objc
+  flutter build ios -t test_driver/e2e_test.dart --simulator
+  cd ios
+  xcodebuild \
+    -workspace Runner.xcworkspace \
+    -scheme RunnerTests \
+    -sdk iphonesimulator \
+    -destination 'platform=iOS Simulator,name=iPhone 8' \
+    test
+  popd
+}
+
+run_formatter() {
+  cd ../..
+  pub global activate flutter_plugin_tools && pub global run flutter_plugin_tools format 2>/dev/null
+}
 
 ###############################################################################
-# End-to-end (e2e) integration tests.
+# main
 ###############################################################################
-DARTLE_H="e2e_tests/test_objc/ios/Runner/dartle.h"
-DARTLE_M="e2e_tests/test_objc/ios/Runner/dartle.m"
-DARTLE_DART="e2e_tests/test_objc/lib/dartle.dart"
-PIGEON_JAVA="e2e_tests/test_objc/android/app/src/main/java/io/flutter/plugins/Pigeon.java"
-pub run pigeon \
-  --input pigeons/message.dart \
-  --dart_out $DARTLE_DART \
-  --objc_header_out $DARTLE_H \
-  --objc_source_out $DARTLE_M \
-  --java_out $PIGEON_JAVA
-dartfmt -w $DARTLE_DART
+should_run_dart_compilation_tests=true
+should_run_dart_unittests=true
+should_run_flutter_unittests=true
+should_run_formatter=true
+should_run_ios_e2e_tests=true
+should_run_ios_unittests=true
+should_run_java_compilation_tests=true
+should_run_mock_handler_tests=true
+should_run_objc_compilation_tests=true
+while getopts "t:l?h" opt; do
+  case $opt in
+  t)
+    should_run_dart_compilation_tests=false
+    should_run_dart_unittests=false
+    should_run_flutter_unittests=false
+    should_run_formatter=false
+    should_run_ios_e2e_tests=false
+    should_run_ios_unittests=false
+    should_run_java_compilation_tests=false
+    should_run_mock_handler_tests=false
+    should_run_objc_compilation_tests=false
+    case $OPTARG in
+    dart_compilation_tests) should_run_dart_compilation_tests=true ;;
+    dart_unittests) should_run_dart_unittests=true ;;
+    flutter_unittests) should_run_flutter_unittests=true ;;
+    ios_e2e_tests) should_run_ios_e2e_tests=true ;;
+    ios_unittests) should_run_ios_unittests=true ;;
+    java_compilation_tests) should_run_java_compilation_tests=true ;;
+    mock_handler_tests) should_run_mock_handler_tests=true ;;
+    objc_compilation_tests) should_run_objc_compilation_tests=true ;;
+    *)
+      echo "unrecognized test: $OPTARG"
+      exit 1
+      ;;
+    esac
+    ;;
+  l)
+    echo "available tests for -t:
+  dart_compilation_tests - Compilation tests on generated Dart code.
+  dart_unittests         - Unit tests on and analysis on Pigeon's implementation.
+  flutter_unittests      - Unit tests on generated Dart code.
+  ios_e2e_tests          - End-to-end objc tests run on iOS Simulator
+  ios_unittests          - Unit tests on generated Objc code.
+  java_compilation_tests - Compilation tests on generated Java code.
+  mock_handler_tests     - Unit tests on generated Dart mock handler code.
+  objc_compilation_tests - Compilation tests on generated Objc code.
+  "
+    exit 1
+    ;;
+  \h)
+    print_usage
+    exit 1
+    ;;
+  \?)
+    print_usage
+    exit 1
+    ;;
+  ?)
+    print_usage
+    exit 1
+    ;;
+  esac
+done
 
-pushd $PWD
-cd e2e_tests/test_objc
-flutter build ios -t test_driver/e2e_test.dart --simulator
-cd ios
-xcodebuild \
-  -workspace Runner.xcworkspace \
-  -scheme RunnerTests \
-  -sdk iphonesimulator \
-  -destination 'platform=iOS Simulator,name=iPhone 8' \
-  test
-popd
-
-###############################################################################
-# Run the formatter on generated code.
-###############################################################################
-cd ../..
-pub global activate flutter_plugin_tools && pub global run flutter_plugin_tools format
+if [ "$should_run_java_compilation_tests" = true ]; then
+  get_java_linter_formatter
+fi
+pub get
+test_running_without_arguments
+if [ "$should_run_dart_unittests" = true ]; then
+  run_dart_unittests
+fi
+if [ "$should_run_flutter_unittests" = true ]; then
+  run_flutter_unittests
+fi
+if [ "$should_run_mock_handler_tests" = true ]; then
+  run_mock_handler_tests
+fi
+if [ "$should_run_dart_compilation_tests" = true ]; then
+  run_dart_compilation_tests
+fi
+if [ "$should_run_java_compilation_tests" = true ]; then
+  run_java_compilation_tests
+fi
+if [ "$should_run_objc_compilation_tests" = true ]; then
+  run_objc_compilation_tests
+fi
+if [ "$should_run_ios_unittests" = true ]; then
+  run_ios_unittests
+fi
+if [ "$should_run_ios_e2e_tests" = true ]; then
+  run_ios_e2e_tests
+fi
+if [ "$should_run_formatter" = true ]; then
+  run_formatter
+fi
