diff --git a/cc/common/cc_debug_helper.bzl b/cc/common/cc_debug_helper.bzl
index 76d5c9c..1fa7861 100644
--- a/cc/common/cc_debug_helper.bzl
+++ b/cc/common/cc_debug_helper.bzl
@@ -103,12 +103,7 @@
     dwo_files = []
     transitive_dwo_files = depset()
     if use_pic:
-        if hasattr(cc_compilation_outputs, "pic_dwo_files"):
-            dwo_files.extend(cc_compilation_outputs.pic_dwo_files())
-        else:
-            dwo_files.extend(cc_compilation_outputs._pic_dwo_files)
-    elif hasattr(cc_compilation_outputs, "dwo_files"):
-        dwo_files.extend(cc_compilation_outputs.dwo_files())
+        dwo_files.extend(cc_compilation_outputs._pic_dwo_files)
     else:
         dwo_files.extend(cc_compilation_outputs._dwo_files)
 
diff --git a/cc/common/cc_helper.bzl b/cc/common/cc_helper.bzl
index 715277d..deee129 100644
--- a/cc/common/cc_helper.bzl
+++ b/cc/common/cc_helper.bzl
@@ -182,17 +182,11 @@
     output_groups_builder["temp_files_INTERNAL_"] = compilation_outputs.temps()
     files_to_compile = compilation_outputs.pic_objects if use_pic else compilation_outputs.objects
     if process_hdrs:
-        if hasattr(compilation_outputs, "header_tokens"):
-            files_to_compile = files_to_compile + compilation_outputs.header_tokens()
-        else:
-            files_to_compile = files_to_compile + compilation_outputs._header_tokens
+        files_to_compile = files_to_compile + compilation_outputs._header_tokens
     files_to_compile = depset(files_to_compile)
     output_groups_builder["compilation_outputs"] = files_to_compile
     output_groups_builder["compilation_prerequisites_INTERNAL_"] = _collect_compilation_prerequisites(ctx = ctx, compilation_context = compilation_context)
-    if hasattr(compilation_outputs, "module_files"):
-        output_groups_builder["module_files"] = depset(compilation_outputs.module_files())
-    else:
-        output_groups_builder["module_files"] = depset(compilation_outputs._module_files)
+    output_groups_builder["module_files"] = depset(compilation_outputs._module_files)
 
     if generate_hidden_top_level_group:
         output_groups_builder["_hidden_top_level_INTERNAL_"] = _collect_library_hidden_top_level_artifacts(
diff --git a/cc/private/rules_impl/cc_binary.bzl b/cc/private/rules_impl/cc_binary.bzl
index b9cb168..f403651 100644
--- a/cc/private/rules_impl/cc_binary.bzl
+++ b/cc/private/rules_impl/cc_binary.bzl
@@ -92,20 +92,11 @@
         ctx.actions.write(output = runtime_objects_list, content = file_content, is_executable = False)
         additional_meta_data = [runtime_objects_list] + runtime_objects_for_coverage
 
-    if hasattr(cc_compilation_outputs, "gcno_files"):
-        gcno_files = cc_compilation_outputs.gcno_files()
-    else:
-        gcno_files = cc_compilation_outputs._gcno_files
-    if hasattr(cc_compilation_outputs, "pic_gcno_files"):
-        pic_gcno_files = cc_compilation_outputs.pic_gcno_files()
-    else:
-        pic_gcno_files = cc_compilation_outputs._pic_gcno_files
-
     instrumented_files_provider = cc_helper.create_cc_instrumented_files_info(
         ctx = ctx,
         cc_config = cpp_config,
         cc_toolchain = cc_toolchain,
-        metadata_files = additional_meta_data + gcno_files + pic_gcno_files,
+        metadata_files = additional_meta_data + cc_compilation_outputs._gcno_files + cc_compilation_outputs._pic_gcno_files,
         virtual_to_original_headers = compilation_context.virtual_to_original_headers(),
     )
     output_groups = cc_helper.build_output_groups_for_emitting_compile_providers(
@@ -314,14 +305,10 @@
         if cc_linking_outputs != None and cc_linking_outputs.library_to_link != None:
             libraries_for_current_cc_linking_context.append(cc_linking_outputs.library_to_link)
     else:
-        if hasattr(cc_compilation_outputs, "lto_compilation_context"):
-            lto_compilation_context = cc_compilation_outputs.lto_compilation_context()
-        else:
-            lto_compilation_context = cc_compilation_outputs._lto_compilation_context
         cc_compilation_outputs_with_only_objects = cc_common.create_compilation_outputs(
             objects = depset(cc_compilation_outputs.objects),
             pic_objects = depset(cc_compilation_outputs.pic_objects),
-            lto_compilation_context = lto_compilation_context,
+            lto_compilation_context = cc_compilation_outputs._lto_compilation_context,
         )
 
     # Determine the libraries to link in.
diff --git a/cc/private/rules_impl/cc_library.bzl b/cc/private/rules_impl/cc_library.bzl
index e2dbcf3..a82a378 100755
--- a/cc/private/rules_impl/cc_library.bzl
+++ b/cc/private/rules_impl/cc_library.bzl
@@ -261,19 +261,11 @@
             elif artifacts_to_build.interface_library != None:
                 files_builder.append(artifacts_to_build.interface_library)
 
-    if hasattr(compilation_outputs, "gcno_files"):
-        gcno_files = compilation_outputs.gcno_files()
-    else:
-        gcno_files = compilation_outputs._gcno_files
-    if hasattr(compilation_outputs, "pic_gcno_files"):
-        pic_gcno_files = compilation_outputs.pic_gcno_files()
-    else:
-        pic_gcno_files = compilation_outputs._pic_gcno_files
     instrumented_files_info = cc_helper.create_cc_instrumented_files_info(
         ctx = ctx,
         cc_config = ctx.fragments.cpp,
         cc_toolchain = cc_toolchain,
-        metadata_files = gcno_files + pic_gcno_files,
+        metadata_files = compilation_outputs._gcno_files + compilation_outputs._pic_gcno_files,
     )
 
     runfiles_list = []
diff --git a/cc/private/rules_impl/objc_library.bzl b/cc/private/rules_impl/objc_library.bzl
index 1ce1b98..cc68a29 100644
--- a/cc/private/rules_impl/objc_library.bzl
+++ b/cc/private/rules_impl/objc_library.bzl
@@ -77,14 +77,6 @@
 
     objc_provider = common_variables.objc_provider
 
-    if hasattr(compilation_outputs, "gcno_files"):
-        gcno_files = compilation_outputs.gcno_files()
-    else:
-        gcno_files = compilation_outputs._gcno_files
-    if hasattr(compilation_outputs, "pic_gcno_files"):
-        pic_gcno_files = compilation_outputs.pic_gcno_files()
-    else:
-        pic_gcno_files = compilation_outputs._pic_gcno_files
     instrumented_files_info = coverage_common.instrumented_files_info(
         ctx = ctx,
         source_attributes = ["srcs", "non_arc_srcs", "hdrs"],
@@ -95,7 +87,7 @@
         # cc_toolchain.coverage_files and the coverage_support_files parameter of
         # coverage_common.instrumented_files_info(...)
         coverage_support_files = cc_toolchain._coverage_files if ctx.configuration.coverage_enabled else depset([]),
-        metadata_files = gcno_files + pic_gcno_files,
+        metadata_files = compilation_outputs._gcno_files + compilation_outputs._pic_gcno_files,
     )
 
     return [
