diff --git a/BUILD b/BUILD
index 2110d02abe737e01ba8b9452b87ddef6eaa91cef..7273b17d739bc2a17854d786205ef135d1c02fc0 100644
--- a/BUILD
+++ b/BUILD
@@ -978,11 +978,15 @@ objc_library(
     "src/core/transport/chttp2/hpack_parser.c",
     "src/core/transport/chttp2/hpack_table.c",
     "src/core/transport/chttp2/huffsyms.c",
+    "src/core/transport/chttp2/incoming_metadata.c",
+    "src/core/transport/chttp2/parsing.c",
     "src/core/transport/chttp2/status_conversion.c",
     "src/core/transport/chttp2/stream_encoder.c",
+    "src/core/transport/chttp2/stream_lists.c",
     "src/core/transport/chttp2/stream_map.c",
     "src/core/transport/chttp2/timeout_encoding.c",
     "src/core/transport/chttp2/varint.c",
+    "src/core/transport/chttp2/writing.c",
     "src/core/transport/chttp2_transport.c",
     "src/core/transport/metadata.c",
     "src/core/transport/stream_op.c",
@@ -1071,6 +1075,8 @@ objc_library(
     "src/core/transport/chttp2/hpack_table.h",
     "src/core/transport/chttp2/http2_errors.h",
     "src/core/transport/chttp2/huffsyms.h",
+    "src/core/transport/chttp2/incoming_metadata.h",
+    "src/core/transport/chttp2/internal.h",
     "src/core/transport/chttp2/status_conversion.h",
     "src/core/transport/chttp2/stream_encoder.h",
     "src/core/transport/chttp2/stream_map.h",
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 5c74bf1eea3dc5f3353a7687db4d2ba15a93b75d..eb2514fa46dfbe9d6ca3910e2c04605e4b646894 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -8717,6 +8717,8 @@
       "src/core/transport/chttp2/hpack_table.h", 
       "src/core/transport/chttp2/http2_errors.h", 
       "src/core/transport/chttp2/huffsyms.h", 
+      "src/core/transport/chttp2/incoming_metadata.h", 
+      "src/core/transport/chttp2/internal.h", 
       "src/core/transport/chttp2/status_conversion.h", 
       "src/core/transport/chttp2/stream_encoder.h", 
       "src/core/transport/chttp2/stream_map.h", 
@@ -8933,16 +8935,22 @@
       "src/core/transport/chttp2/http2_errors.h", 
       "src/core/transport/chttp2/huffsyms.c", 
       "src/core/transport/chttp2/huffsyms.h", 
+      "src/core/transport/chttp2/incoming_metadata.c", 
+      "src/core/transport/chttp2/incoming_metadata.h", 
+      "src/core/transport/chttp2/internal.h", 
+      "src/core/transport/chttp2/parsing.c", 
       "src/core/transport/chttp2/status_conversion.c", 
       "src/core/transport/chttp2/status_conversion.h", 
       "src/core/transport/chttp2/stream_encoder.c", 
       "src/core/transport/chttp2/stream_encoder.h", 
+      "src/core/transport/chttp2/stream_lists.c", 
       "src/core/transport/chttp2/stream_map.c", 
       "src/core/transport/chttp2/stream_map.h", 
       "src/core/transport/chttp2/timeout_encoding.c", 
       "src/core/transport/chttp2/timeout_encoding.h", 
       "src/core/transport/chttp2/varint.c", 
       "src/core/transport/chttp2/varint.h", 
+      "src/core/transport/chttp2/writing.c", 
       "src/core/transport/chttp2_transport.c", 
       "src/core/transport/chttp2_transport.h", 
       "src/core/transport/metadata.c", 
@@ -9116,6 +9124,8 @@
       "src/core/transport/chttp2/hpack_table.h", 
       "src/core/transport/chttp2/http2_errors.h", 
       "src/core/transport/chttp2/huffsyms.h", 
+      "src/core/transport/chttp2/incoming_metadata.h", 
+      "src/core/transport/chttp2/internal.h", 
       "src/core/transport/chttp2/status_conversion.h", 
       "src/core/transport/chttp2/stream_encoder.h", 
       "src/core/transport/chttp2/stream_map.h", 
@@ -9296,16 +9306,22 @@
       "src/core/transport/chttp2/http2_errors.h", 
       "src/core/transport/chttp2/huffsyms.c", 
       "src/core/transport/chttp2/huffsyms.h", 
+      "src/core/transport/chttp2/incoming_metadata.c", 
+      "src/core/transport/chttp2/incoming_metadata.h", 
+      "src/core/transport/chttp2/internal.h", 
+      "src/core/transport/chttp2/parsing.c", 
       "src/core/transport/chttp2/status_conversion.c", 
       "src/core/transport/chttp2/status_conversion.h", 
       "src/core/transport/chttp2/stream_encoder.c", 
       "src/core/transport/chttp2/stream_encoder.h", 
+      "src/core/transport/chttp2/stream_lists.c", 
       "src/core/transport/chttp2/stream_map.c", 
       "src/core/transport/chttp2/stream_map.h", 
       "src/core/transport/chttp2/timeout_encoding.c", 
       "src/core/transport/chttp2/timeout_encoding.h", 
       "src/core/transport/chttp2/varint.c", 
       "src/core/transport/chttp2/varint.h", 
+      "src/core/transport/chttp2/writing.c", 
       "src/core/transport/chttp2_transport.c", 
       "src/core/transport/chttp2_transport.h", 
       "src/core/transport/metadata.c",